近来想研究一下ijkplayer,发现在windows上编译有很多的坑。搞了一天终于能运行example,过程就像排雷一般,但也对整个项目结构了解了一番。记录下来!
可能有些坑没记得写下来,欢迎留言。
下载我改过的文件。
准备材料
- msys2安装包
- ndk(我用的14b)
- 安装android studio
环境配置
安装完msys2后从开始菜单启动msys2 minggw 64-bit,理论上其他两个也可以。
可参考这个https://segmentfault.com/n/1330000004236998进行基本环境配置,
然后使用pacman安装git,make,yasm,python,例如:
pacman -S git
然后安装上ndk。
下载项目
先下载项目。
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
再下载依赖库ffmpeg,libyuv,soundtouch,这里脚本中为每个cpu架构都下载了一个对应的ffmpeg,但我对比过都没区别。
./init-android.sh
创建一个文件ndk-source.txt,内容为
export ANDROID_NDK=你自己的ndk目录(E:/ndk/android-ndk-r14b)
export ANDROID_SDK=你自己的sdk目录(C:/Users/Administrator/AppData/Local/Android/Sdk)
注意修改成你自己的ndk和sdk目录。
编译ffmpeg
先source 一下刚才的ndk-source.txt
source ./ndk-source.txt
往下都只编译armv7a架构,我这么做是为了方便排雷,其它的参考修改应该可行。
1.修改android/contrib/tools/do-compile-ffmpeg.sh
我选择level16,其它估计也可行
FF_ANDROID_PLATFORM=android-16
修改armv7a分支下的(其它架构的可以同样修改)
FF_CROSS_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/toolchain/bin/arm-linux-androideabi
还有以下
export COMMON_FF_CFG_FLAGS=
. $FF_BUILD_ROOT/../../config/module-lite.sh
#export PATH=$FF_TOOLCHAIN_PATH/bin/:$PATH
#export CC="ccache ${FF_CROSS_PREFIX}-gcc"
#export CC="${FF_CROSS_PREFIX}-gcc"
#export LD=${
FF_CROSS_PREFIX}-ld
#export AR=${
FF_CROSS_PREFIX}-ar
#export STRIP=${
FF_CROSS_PREFIX}-strip
./configure $FF_CFG_FLAGS --sysroot=$FF_SYSROOT \
--extra-cflags="$FF_CFLAGS