环境准备
-
for Windows
Windows下需要配置C的编译环境,建议使用Cygwin工具,并在工具内安装git, gcc, yasm。
-
for Mac
mac自带C的编译环境,需下载软件包管理工具homebrew,再安装git, yasm。(博主是在mac下进行编译的)
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
无论是Windows还是MacOS都需要配置Android工程的编译环境,Windows需要在Cygwin终端中的~/.bash_profile或~/.profile上进行配置,MacOS则需要在~/.bash_profile或~/.profile进行配置。
export ANDROID_SDK=/Users/xxx/Library/Android/sdk //sdk所在的路径
export ANDROID_NDK=/Users/xxx/Library/Android/sdk/ndk/android-ndk-r12b //ndk所在的路径,这里使用r12b的ndk进行编译,高版本的ndk会编不过
踩坑遍译
- 拉取代码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android //拉取仓库代码
cd ijkplayer-android //进入工程目录
git checkout -B latest k0.8.8 //切换到最新分支
- 预处理
//根据需要选择编译颗粒度
//lite版
cd config
rm module.sh
ln -s module-lite.sh module.sh
//lite版支持hevc
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
//默认,支持复杂的多种格式
cd config
rm module.sh
ln -s module-default.sh module.sh
- 编译ffmpeg
cd ..
./init-android.sh //此处下载ffmpeg相关资源,需要保证网络条件良好,不然会影响后续的编译
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all //编译ffmpeg
如报错fatal error: linux/perf_event.h: No such file or directory,去module.sh脚本中加上export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf" 即可
- 编译ijkplayer
cd ..
sh compile-ijk.sh all
编译完成后可以看到android工程中的各个library中已经有so文件了。
运行demo
把ijkplayer-example build.gradle中的所有all32
相关的都注释掉
高版本的Android Studio需要在ijkplayer-example build.gradle中的default config中添加flavorDimensions "versionCode"
然后进行项目构建运行就可以了。