《音视频开发进展指南-基于Android与iOS平台的实践》书中的Android-AudioPlayer项目,使用Android Studio Dolphin和MSYS2环境。
有一些修改,具体如下,
-
增加了fdk-aac/ffmpeg/lame/opus/x264/几个库的构造脚本,支持armeabi-v7a和arm64-v8a两种ABI
- ffmpeg不要指定--ld之类的,只要指定--cc和--cxx
- ffmpeg要指定--disable-asm,否则arm64-v8a链接时会有问题
-
gradle中配置使用cmake自动编译jni
-
修改了过时的FFmpeg API使用,avcodec_decode_audio4暂时没有修改为avcodec_send_packet和avcodec_receive_frame样式
-
131.mp3文件打包在APK中,只截取了原文件部分,使用时拷贝到应用专属存储空间,暂时没有让jni直接读资源文件
-
添加了Oboe(双簧管,封装了AAudio和OpenSL ES两种实现)的播放
-
添加了播放完成的处理,修复了AudioTrack Player无法启动的逻辑问题
-
clang比较严格,jni一些函数有返回值但是返回的时候没有给出值,会SIGILL出错退出
- 报错模块是libc,内容为"Fatal signal 4 (SIGILL), code 1, fault addr ..."