3
41
¥ 129.00购买
开通会员,立省12.90元, 立即开通
立即购买

你将收获

1、学会FFmpeg编译Android平台。

2、学会FFmpeg解码音频数据流程。

3、学会Android中用OpenSL ES来播放PCM音频。

4、学会Android中调用C++方法。

适用人群

有一年以上的Android开发者,对C++有一定的基础

课程介绍

FFmpeg打造Android万能音频播放器视频教程,移植FFmpeg到Android平台,利用FFmpeg解码音频数据并用OpenSL ES来播放,打造Android万能播放器。

课程讨论

Seek不能消除尾音,播放音乐时感觉不出来, 如果是朗诵的话就很明显,也就是教程提供的方式不能彻底清除缓存,不知有没有新的方式。

编译ffmpeg总是出现:gcc is unable to create an executable file. If gcc is a cross-compiler, use the --enable-cross-compile option. Only do this if you know what cross compiling means. C compiler test failed.

E/AndroidRuntime: ERROR: thread detach failed E/libc: Access denied finding property "media.metrics.enabled" 在Android10.0系统会出现上面错误

inputBufferIndex = encoder.dequeueInputBuffer(0); ioctl c0044901 failed with code -1: Not a typewriter mediaCodecDecode: inputBufferIndex --> -1 IllegalStateException dequeueInputBuffer方法异常:

在Audio::release()中 if (pcmPlayerObject != NULL){ (*pcmPlayerObject)->Destroy(pcmPlayerObject); 执行到上面这一步时会出现下面错误, E/AndroidRuntime: ERROR: thread detach failed 有时会报指针错 Fatal signal 11 (SIGSEGV)

编码aac的时候 , byteBuffer.put(buffer); java.nio.BufferOverflowException at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:264) at java.nio.ByteBuffer.put(ByteBuffer.

已经导入<string>和<string.h>, PlayStatus. h中如果定义一个std::string类型的属性,则new PlayStatus()时会直接崩溃。好像所有的myplaye目录下的头文件中都不可以声明std::string类型的属性。这是什么原因?

***Audio 的构造函数内需将clock, last_time, now_time初始化=0,解决再次start进度显示不准确问题

添加播放器出错回调 这一章节,将onCallLoading放到native层后,需要继续调用status->loading=true; 解决重采样到pcm后,无法关闭activity progressbar,因为无法执行callJava->onCallLoading(MAIN_THREAD, false);

计算当前播放时长和获取总时长以及实现回调 WLAudio类里的data_size去掉,resample_audio的buffer_size返回值用局部变量 解决播放完成继续enque问题,表现为时间cur到达total还会继续累加

同学笔记

没有更多了