13_android编译ijkplayer

13_android编译ijkplayer

一.编译环境
  • macOS Big Sur 11.4
  • NDK r10e
  • HomeBrew
  • git
二.编译前准备
  • 配置ANDROID_SDK和ANDROID_NDK环境变量

13_android编译ijkplayer_第1张图片

  • 安装git,make, yasm
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

13_android编译ijkplayer_第2张图片

可以看到当我们编译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文件导入到自己的项目去使用

13_android编译ijkplayer_第3张图片

你可能感兴趣的:(android,android,ijkplayer)