【其实不难】【MAC OS】编译IjkPlayer支持Https协议/各种直播协议、Avi等视频格式
1、 环境
Mac OS 10.13.4:其他环境后续补充,建议使用Linux/Mac环境编译
ffmpeg 0.8.8:目前最新版,如你使用的是旧版本,请仔细阅读教程正文,会有补充
Git:MacOS应该自带了git工具链,如没有请自行安装
1.5、 什么鸡儿?我只想要新的so不想知道怎么搞!
懒人下载链接:IjkPlayer-0.8.3 so库下载地址只使用0.8.3版本,其他版本请自行编译!
2、准备工作
请务必按照下面的步骤进行配置!
①、下载NDK-r10e
下载地址:MacOS X 64-bit-android-ndk-r10e-darwin-x86_64.bin
②、安装NDK环境并配置
cd 到android-ndk-r10e-darwin-x86_64.bin下载完成的目录执行以下指令
chmod a+x android-ndk-r10e-darwin-x86_64.bin
./android-ndk-r10e-darwin-x86_64.bin
等待解压完成等到下图所示文件夹
获取这个文件夹的位置配置到环境变量中
使用vim编辑~/.bash_profile并保存
(如果使用了zsh,那么就要编辑~/.zshrc)
如果没有这个文件,请自行新建
//不要直接复制这一句,=后面要粘贴自己的路径
export ANDROID_NDK=/Users/###/android-ndk-r10e
③、配置Android SDK环境
在Android Studio中获取Android SDK的位置,如下图
同样配置到~/.bash_profile并保存
(如果使用了zsh,那么就要编辑~/.zshrc)
//不要直接复制这一句,=后面要粘贴自己的路径
export ANDROID_SDK=/Users/###/Library/Android/sdk
source ~/.bash_profile(~/.zshrc)
④、配置homebrew和yasm
//安装homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
//安装 yasm
brew install yasm
3、编译
请自行创建一个文件夹用于进行后续的操作,在该新建文件夹中执行以下指令
①、获取iIjkPlyer
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B k0.8.3
//如果你使用的是新版,例如0.8.8版本,请执行如下指令
git checkout -B k0.8.8
//你也可以使用git tag指令来查看所有可以checkout的版本
②、自定义要支持的协议或格式(如果只想支持https、avi、flv等,请跳过这一步)
自定义要支持的协议或视频格式
通过vim或者记事本编辑该文件
这里只截取一部分,将你想要增加的协议或者格式更改为enable,例如我想支持rtp视频流只需要按照如下更改然后保存即可
③、初始化openSSL/获取FFmpeg库文件
这一步看网速,可能会比较耗时
在ijkplayer-android目录下执行
./init-android-openssl.sh 这一步是添加https协议支持,看需求是否要执行
./init-android.sh
④、编译
cd android/contrib
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
# 下面这一步耗时较久
./compile-openssl.sh all //编译https支持
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
//如果只想支持armv7a,不要其他CPU架构可以去掉all,比较节省时间
4、查看生成文件
打开如下目录
/###/ijkplayer-android/android/ijkplayer
查看armv7a架构的.so文件
cd ijkplayer-armv7a/src/main/libs/armeabi-v7a
这里有三个so文件拷贝到自己的工程里使用即可
如果需要其他Cpu架构如x86的请到对应的目录下寻找即可
5、使用新的so库
①、解除旧的依赖
api 'tv.danmaku.ijk.media:ijkplayer-java:0.8.3'
// api 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.3'
//如有其他架构也要解除依赖并引入自己编译的so库
②、拷贝新的so到工程
这里需要注意,如果你使用了自定义的JniLib目录,就要拷贝到自己定义的目录下面
③、rebuild工程,然后放小电影吧!
5、致谢
感谢Bilibili工程师的无私奉献