最近项目中需要集成播放器来播放拉下来的直播流,看了很多开源的播放器框架,最终选择了B站开源的ijkplayer。ijkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器。FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤器和播放大部分的视频格式。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。在编译ijkplayer的过程中,遇到了许多坑,在此总结下。
ijkplayer框架源码:https://github.com/Bilibili/ijkplayer
第一个坑就是ijkplayer没有文档说明,于是乎我在网上找相关资料,看了很多博客,最终成功编译了ijkplayer。
第一步,需要安装homebrew、git、yasm
1 安装homebrew:
打开Terminal,输入:
ruby -e "$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew安装成功后,会自动创建目录 /usr/local/Cellar 来存放Homebrew安装的程序。 这时你在命令行状态下面就可以使用 brew 命令了
2 安装git和 yasm
Terminal输入: brew install git
brew install yasm
第二步,安装好git和yasm后就要下载NDK来配置环境
1 ndk下载链接:https://developer.android.google.cn/ndk/downloads/index.html
2 配置ndk路径:
打开Terminal输入: open -e .bash_profile
打开bash_profile文件
在文件里面添加:
export PATH=$PATH:你的ndk路径
ANDROID_NDK=你的ndk路径
export ANDROID_NDK
然后 command+s 保存 ,Terminal输入source .bash_profie 更新下(一定不要忘了,我就是忘了这步导致编译失败,第二个坑)
最后检测是否配置ndk路径成功,在Terminal输入:ndk-build
出现如下内容表示配置成功。
第三步,将ijkplayer框架源码clone到本地并编译,依次在终端输入如下命令:
1 下载源码:
git clonehttps://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.4
2 初始化
./init-android.sh
3 编译ffmpeg
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
若出现如下错误:
“Youmust define ANDROID_NDK, ANDROID_SDK before starting.They must point to yourNDK and SDK directories.”
则说明ndk配置路径有问题,重新参照上面的操作配置下ndk路径即可解决。
4 编译ijkplayer
cd ..
./compile-ijk.sh all
到此为止,完成了对源码的编译,ijkplayer-android的目录结构如图
如果正确编译的话,会分别在ijkplayer-arm64、ijkplayer-armv5、ijkplayer-armv7a、ijkplayer-x86、ijkplayer-x86_64这些项目的src/main/libs/对应的名称 目录下分别生成libijkffmpeg.so、libijkplayer.so、libijksdl.so这三个so文件
现在,你可以将ijkplayer导入到Android Studio中。
经过我编译后的Android工程文件包含demo(由于限制上传资源大小,只上传了module,你可以自己新建工程导入module),点击下载
经过我编译后的iOS工程文件,点击下载