1.简介
最近项目需要rtsp协议流视频播放,也参考使用了主流的视频播放框架,诸如 饺子,GSY等,这类播放器实际上是对播放UI的封装,底层播放引擎都是基于或者扩展自ijkplayer的。经过学习与使用,使用这类视频UI框架能够美化我们的视频播放UI界面,更好的进行视频播放的控制,但对于饺子而言其基础引擎支持的编码格式有限,对于我们复杂的工程需求往往需要支持直播协议的rtsp,rtmp协议流,故而对于这类需求的开发者需要使用ijkplayer引擎,通过编译源码的方式生成so库,来支持达到特定协议的目的。后面也将详细的介绍mac下编译ijkplayer源码生成so库的详细步骤,以及特定的工程问题技巧,希望对各位有一定的帮助。
2.编译ijkplayer源码
2.1下载ijkPlayer源码
下载地址:https://github.com/Bilibili/ijkplayer,直接下载下来解压即可。
2.2 环境搭建
像基本的java JDK Android Studio我这里就不说明了,主要说明下用于编译源码的ndk的配置。
查看 /ijkplayer-master/android/contrib/tools/do-detect-env.sh 如下有一段会检查NDK版本,可以发现检索的是11 12 13 14的版本,然而AS默认提供的NDK下载支持一般都比较新,造成检索到的预期要求编译的不匹配,而报“You need the NDKr10e or later”。
case "$IJK_NDK_REL" in
11*|12*|13*|14*)
if test -d ${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9
then
echo "NDKr$IJK_NDK_REL detected"
else
echo "You need the NDKr10e or later"
exit 1
fi
;;
*)
echo "You need the NDKr10e or later"
exit 1
;;
esac
那么查看下AS的可以下载的NDK版本已经到了18了,明显不是我们想要的,那么需要我们自己去下载ndk,并进行环境变量的配置
ndk_14环境变量的下载
ndk下载地址: https://developer.android.google.cn/ndk/downloads/
请在历史ndk版本中选择版本14对应的mac版本进行下载。(文末有网盘下载)
ndk_14 环境变量配置
1.控制台命令行 开发配置文件:
cd ~
open -e .bash_profile
2.
# 变量名为ANDROID_NDK 路径填你解压到的路径即可
export ANDROID_NDK=/Users/apple/Library/Android/android-ndk-r14b
# 注册变量
export PATH=${PATH}:${ANDROID_NDK}
3.保存配置文件:
source .bash_profile
4. 检查ndk配置
ndk-build
效果如下即配置OK,重新启动一个控制台。
2.3 编译ijkplayer源码步骤
a. 打开 /ijkplayer-master/config/module-lite.sh
添加如下配置:用以支持rtsp流协议以及mpeg4硬解码
# 支持rtsp流
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=tcp"
export COMMON_FF_CFG_FLAGS="$COMMO