ijkplayer编译支持HTTPS和采坑记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qqqq245425070/article/details/89139466

编译之前要准备好编译环境:
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

扫描二维码关注公众号,回复: 6187874 查看本文章
./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 的最后面就可以了

猜你喜欢

转载自blog.csdn.net/qqqq245425070/article/details/89139466