4
62
¥ 103.00购买 ¥129.00 课程8.0折
开通会员,立省10.30元, 立即开通
立即购买

你将收获

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还会继续累加

同学笔记

  • u011573372 2021-03-03 14:02:33

    来源:FFmpeg移植Android平台(更新最新版本编译脚本) 查看详情

    安装ffmpeg过程中,执行./configure时,报yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild错误,分析、解决如下:

    分析:yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装yasm时,就会报上面错误。

    解决:安装yasm编译器。安装方法如下:

    在http://www.tortall.net/projects/yasm/releases下面找到适合自己平台的yasm版本。然后进行安装。举例如下:

    1)下载:wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

    2)解压:tar zxvf yasm-1.3.0.tar.gz

    3)切换路径: cd yasm-1.3.0

    4)执行配置: ./configure

    5)编译:make

    6)安装:make install
    ————————————————
    版权声明:本文为CSDN博主「Dream_yz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yzhang6_10/article/details/75635734

  • jian55661818 2021-01-27 14:33:06

    来源:课程简介和功能演示(每节课课件和源码均可下载) 查看详情

    刚开始学习,加油

  • qq_18414967 2020-10-26 17:57:19

    来源:添加播放器出错回调 查看详情

    添加播放器出错回调 这一章节,将onCallLoading放到native层后,需要继续调用status->loading=true;

    解决bug:重采样到pcm后,无法关闭activity progressbar,因为无法执行callJava->onCallLoading(MAIN_THREAD, false);

     

没有更多了