一、环境准备
准备1台Centos虚拟机,可用Oracle Virtual Box虚拟机或者vmware进行安装,此处使用Oracle Virtual Box。
二、代码拉取到虚拟机
从https://github.com/bilibili/ijkplayer上拉取ijkplayer源码,然后切换到正式版本分支,本文是download在/home/workspace/opensrc/目录下。
三、环境变量
首先 vi ~/.bash_profile 配置文件,然后编辑以下2个环境变量:
其中,ANDROID_SDK指向的是ijkplayer所需sdk包;
ANDROID_NDK指向的是ijkplayer所需ndk包,至少是 NDK r10e 版本,本文所用NDK版本是NDK r12b。
待编辑完成后,执行 source ~/.bash_profile生效。
四、执行编译
1)执行init-android.sh
于/home/workspace/opensrc/ijkplayer目录,执行sh init-android.sh拉取ffmpeg等第三方库代码,初始化编译环境。
2)执行init-android-openssl.sh
而后在1)同级目录,执行sh init-android-openssl.sh脚本,拉取openssl库源码。
3)执行compile-openssl.sh
然后,cd /home/workspace/opensrc/ijkplayer/android/contrib到此目录,执行sh compile-openssl.sh clean清理,再执行sh compile-openssl.sh all编译armv5/armv7a/arm64/x86/x86_64目标平台下openssl的so库。
4)执行compile-ffmpeg.sh
在3)同级目录,执行sh compile-ffmpeg.sh clean清理,再执行sh compile-ffmpeg.sh all编译armv5/armv7a/arm64/x86/x86_64目标平台下ffmpeg的so库。
5)执行compile-ijk.sh all
回到/home/workspace/opensrc/ijkplayer/android目录下,执行sh compile-ijk.sh all脚本编译ijksdl/ijkffmpeg/ijkplayer的so库。
四、注意事项
1)尽量不要把ijkplayer的源码下载到win上,再通过工具上传到Linux上编译,会出现较多莫名其妙的编译问题;
2)建议直接将源码拉取到Linux上编译;
3)建议在win上使用虚拟机而不是通过MingW来编译;
4)若遇到编译问题,建议先去 https://github.com/bilibili/ijkplayer/issues 尝试找到解决办法。