1.ijkplayer简介
ijkplayer 是一个基于 FFplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供Android平台下应用弹幕集成的解决方案,此方案不仅已用于美拍和斗鱼APP,而且被越来越多的公司所采用。是Github上很好的开源项目。
2.搭建NDK和SDK环境
推荐下载地址AndroidDevTool
添加用于编译的环境变量
export ANDROID_SDK=~/sdk
export ANDROID_NDK=~/android-ndk-r10e
export PATH=$PATH:$ANDROID_SDK:$ANDROID_NDK:$ANDROID_SDK/platform-tools/
3.编译源码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.6.2
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
编译完成会生成如下库文件
* libijkffmpeg.so
* libijkplayer.so
* libijksdl.so
4.编译过程分析
./init-android.sh
执行后会自动下载 ffmpeg 和 android-libyuv 依赖包,其中由于 ffmpeg 仓库在国外,故需要等待较长时间,建议使用Host或挂VPN下载。
对于特定的开发平台,./compile-ffmpeg.sh all、./compile-ijk.sh all两条命令的附加参数可以对应修改。
5.Android Studio工程
Open an existing Android Studio project
Select android/ijkplayer/ and import
define ext block in your root build.gradle
ext {
compileSdkVersion = 23 // depending on your sdk version
buildToolsVersion = "23.0.0" // depending on your build tools version
targetSdkVersion = 23 // depending on your sdk version
}
6.遇到过的问题
- 最后一个shell命令执行后,x86-64编译提示找不libijkffmpeg.so,原因是ffmpeg编译x86-64平台出错
- ./compile-ffmpeg.sh all编译需要很久,提示NDK路径错误需要ndk-build检查下环境变量。
- 如果不编译想直接使用so库,可以提取bilibili客户端编译好的so库手动导入,还可以直接百度下载其他开发者编译好的库文件。
- 解决 ffmpeg yasm not found, use –disable-yasm for a crippled build,终端输入sudo apt-get install yasm,重新编译。
7.参考教程
ijkplayer阅读笔记
小试ijkplayer编译
Ubuntu 14.04 下编译 ijkplayer Android
深入了解 Ijkplayer
ijkplayer学习系列之环境搭建
Eclipse编译ijkplayer
简书搜索ijkplayer
ijkplayer初始化流程
简书android ijkplayer教程