Skip to content

Android播放MP3文件(使用FFmpeg解码为PCM,使用AudioTrack/OpenSL ES/Oboe三种不同方式来播放)

Notifications You must be signed in to change notification settings

PieerePi/Android-OboeAudioPlayer

Repository files navigation

项目练习 - Android播放MP3文件(使用FFmpeg解码为PCM,使用AudioTrack/OpenSL ES/Oboe三种不同方式来播放)

《音视频开发进展指南-基于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两种实现)的播放

Main Oboe

  • 添加了播放完成的处理,修复了AudioTrack Player无法启动的逻辑问题

  • clang比较严格,jni一些函数有返回值但是返回的时候没有给出值,会SIGILL出错退出

    • 报错模块是libc,内容为"Fatal signal 4 (SIGILL), code 1, fault addr ..."

About

Android播放MP3文件(使用FFmpeg解码为PCM,使用AudioTrack/OpenSL ES/Oboe三种不同方式来播放)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published