13_android编译ijkplayer
一.编译环境
- macOS Big Sur 11.4
- NDK r10e
- HomeBrew
- git
二.编译前准备
- 配置ANDROID_SDK和ANDROID_NDK环境变量
brew install git
brew install make
brew install yasm
三.使用git获取ijkplayer最新源码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
四.项目结构
|ijkplayer-android |----android //Ijkplayer Android 项?源码 |----config //ffmpeg的配置脚本 |----|----module.sh //ffmpeg 当前配置脚本,可?以下三个模板替换当前脚本 |----|----module-default.sh //默认配置 |----|----module-lite.sh //最?化配置 |----|----module-lite-hevc.sh //基于最?化配置添加hevc功能配置 |----doc //介绍说明 |----extra //三?依赖库保存的?件夹 |----|----init-extra.sh // 引?本地存在的库 |----ijkmedia //IjkPlayer Native部分源码 |----ijkprof |----ios //IjkPlayer IOS 部分源码 |----tools //git操作项?的?具脚本 |----|----pull-repo-base.sh |----|----pull-repo-ref.sh |----|----setup-as-commiter.sh |----|----sync-mirrors.sh |----init-android.sh //Android初始化脚本 |----init-android-exo.sh //被compile-ijk.sh调? |----init-android-j4a.sh //被compile-ijk.sh调? |----init-android-libsoxr.sh //被compile-ijk.sh调? |----init-android-libyuv.sh //被init脚本调? |----init-android-openssl.sh //添加openssl需要在编译ffmpeg之前执?openssl的init和compile |----init-android-prof.sh //被compile-ijk.sh调? |----init-android-soundtouch.sh //被compile-ijk.sh调? |----init-config.sh //被init脚本调? |----init-ios.sh //ios初始化脚本 |----init-ios-openssl.sh //添加openssl需要在编译ffmpeg之前执?openssl的init和compile |----version.sh //查看版本的脚本
五.编译模式配置
- module-default.sh:全量编译,支持的较多的编解码格式,生成的.so动态库文件较大
- module-lite.sh:支持的较少的编解码格式,生成的.so动态库文件较小
- module-lite-hevc.sh:支持的较少的编解码格式,添加hevc功能配置,生成的.so动态库文件较小
我们选择module-default.sh进行编译
cd config
rm module.sh
ln -s module-default.sh module.sh
注意:选用module-default.sh进行编译时,需要在module-default.sh文件中添加如下配置,否则编译过程中报错
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
六.编译openssl
为什么要编译openssl?因为要让我们的播放器能够播放https的视频啊😄,所以我们需要手动编译openssl,以支持https,并且需要在编译ffmpeg之前执?,回到ijkplayer-android根目录,执行初始化init-android-openssl脚本文件,初始化openssl,此处顺利与否会和你的网络有直接关系,建议使用翻墙工具😄
./init-android-openssl.sh
开始编译
cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all
可以看到当我们编译openssl成功后,系统已经给出明确的提示,可以开始编译ffmpeg了,ffmpeg编译完成后,就可以编译ijkplayer相关源码了
七.编译ffmpeg
回到ijkplayer-android根目录,执行初始化init-android.sh脚本文件,初始化ffmpeg,此处顺利与否会和你的网络有直接关系,建议使用翻墙工具😄
./init-android.sh
开始编译ffmpeg
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
八.编译Ijkplayer
cd ../
./compile-ijk.sh clean
./compile-ijk.sh all
编译成功后会可以看到ijkplayer-android/android/ijkplayer的android项目,可以直接通过android-studio打开该项目,修改配置文件运行,也可以从中把生成的.so文件导入到自己的项目去使用
|