ijkplayer编译支持HTTPS和采坑记录
编译之前要准备好编译环境:
sdk
ndk(这个地方希望是用你ndk14)
再次不在赘述,只是贴出我的环境变量:
#android adb
export PATH=${PATH}:/softdata/android-sdk-macosx/platform-tools:/softdata/android-sdk-macosx/tools
export PATH=/softdata/android-sdk-macosx/android-ndk-r14b:$PATH
ANDROID_NDK=/softdata/android-sdk-macosx/android-ndk-r14b
测试NDK是否成功只需要在控制台打出ndk-build -v
测试adb有没有配置成功可以使用adb version
1. clone ijkplayer 源码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
2. 编译之前
编译前选择你的配置
选择自动化编译时的一些配置选项,比如支持的协议,音视频类型等,官方给我们提供了三个模板。
可以打开config/目录下config/module.sh看看,enable启用,disable禁用
module-default.sh
module-lite-hevc.sh
module-lite.sh
If you prefer more codec/format
cd config
rm module.sh
ln -s module-default.sh module.sh
cd android/contrib
sh compile-ffmpeg.sh clean
If you prefer less codec/format for smaller binary size (include hevc function)
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
cd android/contrib
sh compile-ffmpeg.sh clean
If you prefer less codec/format for smaller binary size (by default)
cd config
rm module.sh
ln -s module-lite.sh module.sh
cd android/contrib
sh compile-ffmpeg.sh clean
官方默认建议选择的是 module-lite.sh,可以根据自己的需求选择
cd config
rm module.sh
ln -s module-lite.sh module.sh
3. 开始编译
执行初始化
初始化会下载各种包,尽量选择在良好的网络环境下╮( ̄ ̄)╭
cd ..
./init-android.sh
初始化OpenSSL
./init-android-openssl.sh
编译OpenSSL和FFmpeg
首先清除一波
cd android/contrib
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
编译OpenSSL:可以选择不同版本,全量编译耗时更长,但最好选择全量编译,编译完成后再根据需求选择要使用的包。
./compile-openssl.sh all
编译FFmpeg,同样的
./compile-ffmpeg.sh all
// 如果要选择特定的架构: ./compile-ffmpeg.sh armv7a | armv5
最后编译ijkplayer
./compile-ijk.sh all
到此我们编译就完成了,so库已经生成他们的位置在src/main/libs下了,需要什么样的cpu架构去对应的文件夹下去找就可以了
下面就是把编好的so导入到项目,我们之间导入是利用下面的方式导入
# required, enough for most devices.
compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'(现在这行可以去掉了)
在build.gradle中添加下边的代码
然后再在app下创建libs文件夹,把生成的类库添加到libs就可以了
编译IJKPlayer时,踩坑实录
1. You need the NDKr10e or later
build on Linux x86_64
ANDROID_NDK=/home/czl/Android/android-ndk-r16b
IJK_NDK_REL=16.1.4479499
You need the NDKr10e or later
解决办法:
下载低版本ndk,NDK下载 【下载版本为14的(亲测成功)】
2.在编译ffmpeg的时候报错的解决办法
compilation terminated.
make: *** [libavfilter/af_acopy.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [libavfilter/af_acrusher.o] Error 1
解决办法
仔细阅读module-lite.h 原来在最下面有一行配置:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
把这行复制到module-default.sh或者module-lite-hevc.sh 的最后面就可以了
上一篇: 初始化数组_PHP