注意:截至目前,master分支的ijkplayer仅支持最新到r14的Android NDK,更新的则无法识别;
这里有一份从官网下载的R14 NDK,需要的自取:百度网盘 提取码:vtfs
假设我的Android SDK与NDK分别存放在~/dev_tools/android-sdk/与~/dev_tools/android-ndk-r14b/,那么在终端中执行如下指令:
export ANDROID_SDK=~/dev_tools/android-sdk/ export ANDROID_NDK=~/dev_tools/android-ndk-r14b/配置文件在config/module.sh中(默认软连接到module-lite.sh)
在文件末尾添加如下配置:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp" export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp" export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=mjpeg" export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=mjpeg"在ijkplayer git库根目录依次执行如下指令:
./init-android.sh cd android/contrib/ ./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all至此,ijkplayer的so库已经编译完成了,存放在ijkplayer/ijkplayer-*/src/main/libs/下,*表示编译时选择的架构,我们选择的时all,所以有如下这么几个:
$ ls ijkplayer/*/src/main/libs ijkplayer/ijkplayer-arm64/src/main/libs: arm64-v8a ijkplayer/ijkplayer-armv5/src/main/libs: armeabi ijkplayer/ijkplayer-armv7a/src/main/libs: armeabi-v7a ijkplayer/ijkplayer-x86_64/src/main/libs: x86_64 ijkplayer/ijkplayer-x86/src/main/libs: x86分散在这几个目录下,要用的时候还是略微优点麻烦,因此shell指令将so库拷贝到同一目录下,方便移植;
然后直接查看output这个目录下的内容即可:
$ ls output/* output/arm64-v8a: libijkffmpeg.so libijkplayer.so libijksdl.so output/armeabi: libijkffmpeg.so libijkplayer.so libijksdl.so output/armeabi-v7a: libijkffmpeg.so libijkplayer.so libijksdl.so output/x86: libijkffmpeg.so libijkplayer.so libijksdl.so output/x86_64: libijkffmpeg.so libijkplayer.so libijksdl.so