做音视频的朋友一般应该都知道ijkplayer这个播放器,之前做开发一般是直接使用别人直接封装好的播放器如jiaoziplayer,vitamio等,但是最近碰到了一个难题,我们直播中的直播流中音频格式不支持,音频格式不是标准的AAC格式而是nellymoser 格式,致使我们的视频播放只有画面没有声音,通过搜索资料可以通过重新编译ijkPlayer实现播放.废话不多说直接上教程,其实大部分的教程都是按照github上的教程走的:附上github地址https://github.com/Bilibili/ijkplayer
第一步:安装工具,下载SDK和NDK
这是github上的准备工作的截图,直接打开mac的终端,在终端中输入上边的指令
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
就是简单的三个安装命令,接下来需要下载SDK和NDK,这个你直接在网上百度就可以查到,我用的是21的sdk和14的ndk,ndk最好用最新的r14的(android-ndk-r14b),我同事用的r9的直接编译报错的,具体怎么回事不清楚.
第二步:配置.bash_profile的参数
通过终端命令打开文件命令是open .bash_profile在这个文件中需要配置三个参数
export PATH=$PATH:/Users/lijianfei/Desktop/android-ndk-r14b
export ANDROID_SDK=/Users/lijianfei/Desktop/android-21
export ANDROID_NDK=/Users/lijianfei/Desktop/android-ndk-r14b
把这三行直接添加到这个文家中保存即可
第三步:下载ijkplayer-android并修改module.sh文件(如果你只是要编译不需要支持nellymoser格式第三步可以不走),
这也是通过终端命令实现的,命令是
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
下载下来之后在你的电脑中找到这个文件打开他的config文件夹里边的module.sh文件在这个文件中添加三行
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=h263"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=libspeex"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=nellymoser"
加入到这个文件中就可以支持播放nellymoser文件了,
[如果你想编译支持全格式的音视频播放的话第三步改为直接在终端中执行三行命令
cd config
rm module.sh
ln -s module-default.sh module.sh
]
第四步:执行编译过程
cd ijkplayer-android
git checkout -B latest k0.8.4
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
按照上方的指令一步一步的在终端中执行就可以了,在执行./init-android.sh的时候会比较慢不用着急,我在执行./complie-ffmpeg.sh的时候出现了很多的warning但是不影响最后编译的so文件,所有步骤执行完之后打开文件具体路径应该是这是其中一个arm64的文件路径里边会有三个so文件
分别把这几个libs中的文件拷贝出来防盗自己的项目中就可以了