1. 环境搭建
1.1 安装cygwin,并安装git,make,ysam
具体安装过程网上有很多资料,不再详述。
1.2 android sdk和android ndk下载和安装
参见网上资料
1.3 下载ijkplayer源码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.3.1
1.4 设置环境变量
在cygwin的home目录下,修改 ~/.bash_profile 或 ~/.profile文件,添加
export ANDROID_SDK=<your sdk path>
export ANDROID_NDK=<your ndk path>
其中的路径根据实际情况填写。
2. 编译过程
进入ijkplayer源码根目录
cd config
rm module.sh
ln -s module-default.sh module.sh
#以上是默认的设置,也可以使用
# ln -s module-lite.sh module.sh
回到ijkplayer源码根目录
# 下载ffmpeg源码
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
#编译ffmpeg,,以armv7a架构的cpu代码为例进行编译
./compile-ffmpeg.sh armv7a
#编译ijkplayer
cd ..
./compile-ijk.sh armv7a
如果编译成功的话,会在
F:\\ijkplayer\android\ijkplayer\player-armv7a\src\main\libs\armeabi-v7a下生成三个so库文件
3. 编译过程中容易出问题的地方
注意:该步容易出问题,我在开始时编译只生成了一个libijkffmpeg.so。原因是F:\\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni下使用了软链接,ijkmedia和android-ndk-prof分别链接到ijkplayer根目录下的/ijkmedia和/ijkprof,而cygwin和android NDK在处理文件夹软链接时似乎有问题,所以并没有执行ijkmedia和ijkprof的编译。
基于以上问题,可以做如下修改
将ijkmedia和ijkprof的makefile文件写在F:\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni\Android.mk
文件的最后,用include包含进来
删除F:\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni下的ijkmedia和android-ndk-prof
将compile-ijk.sh中生成android-ndk-prof链接文件的部分注释掉
4. 将工程导入eclipse中,编译并运行
File -> New -> Project -> Android Project from Existing Code
Select android/ and import all project
编译后在真机运行即可
5. 参考文献
ijkplayer的github主页:https://github.com/Bilibili/ijkplayer