从视频直播到播放器,现在很多的产品都集成了视频播放的功能,而目前市面上有比较主流的有第三方框架有:
Vitamio ( 体积比较大,有商业化风险
github:https://github.com/yixia/VitamioBundle/)
ijkplayer(B站下开源的框架 体积大 配置环境比较麻烦
github:https://github.com/Bilibili/ijkplayer )
PLDroidPlayer(七牛根据ijkplayer二次开发的 定制简单
github:https://github.com/pili-engineering/PLDroidPlayer)
不过本文并不是对这三个播放器进行介绍,而是简单的介绍如何在ubuntu和mac环境下编译ijkplayer。 ijkplayer框架的源码地址:
https://github.com/Bilibili/ijkplayer
Mac上编译ijkplayer
安装软件
在Mac上编译ijkplayer之前,需要先安装一些基本的软件,这些软件在其他的开发中也会用到,需要安装的软件有homebrew、git、yasm。
1,安装homebrew
打开Terminal,输入如下的命令:
ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
2,安装git和 yasm
安装好homebrew后,再安装git和 yasm,安装的命令如下:
brewinstallgitbrewinstallyasm
下载NDK并进行环境配置
NDK下载的官方地址为:
https://developer.android.google.cn/ndk/downloads/index.html
当然也可以到下面的地址下载(可以直接使用迅雷等P2P软件下载,建议下载r15版本):
https://blog.csdn.net/gyh198/article/details/75036686
然后,打开Terminal输入并输入如下的命令来打开环境变量,然后添加NDK的相关环境。
open-e.bash_profile
当然,也可以直接使用文本编辑器打开.bash_profile文件。
然后添加如下内容:
exportPATH=$PATH:你的ndk路径exportANDROID_NDK=你的ndk路径
然后 command+s 保存 ,最后检测是否配置ndk路径成功,在Terminal输入如下命令进行检测。
ndk-build
注意:当然,也可以使用Android-sdk里面的NDK,不过Android-sdk是最新版本,该文件所在结构如下:
配置完后,我们可以使用如下命令来检测NDK环境是否配置正确。
ndk-build -v
下载ijkplayer和编译ijkplayer
将ijkplayer框架源码clone到本地并编译,依次在终端输入如下命令。
gitclonehttps://github.com/Bilibili/ijkplayer.git ijkplayer-androidcd ijkplayer-android
然后执行初始化,此时会从网上自动拉代码,主要是ijkplayer的一些基层类库,时间比较长。命令如下:
./init-android.sh
如果视频播放需要支持Https协议,还需要执行如下命令。
./init-android-openssl.sh
注意:若出现如下错误,说明是NDk的环境配置有问题。
Youmust define ANDROID_NDK, ANDROID_SDK before starting.They must point to yourNDKandSDK directories.
然后,编译各个平台的openssl。
cdandroid/contrib./compile-openssl.sh clean./compile-openssl.sh all
编译各个平台的ffmpeg,如果需要更多的编解码格式,需要先执行下面的命令。
cd../..cdconfigrm module.shln-smodule-lite.sh module.shcd..cdandroid/contrib./compile-ffmpeg.sh clean
说明:如果使用最新版本上如果执行的是(ln -s module-lite.sh module.sh),会出现如下错误:
然后,编译各个cpu架构的ffmpeg。命令如下:
./compile-ffmpeg.sh all
然后使用如下的命令编译ijkplayer即可。
cd.../compile-ijk.sh all
如果出现如下图所示的错误,请更换ndk的版本。
如果正确编译的话,会分别在ijkplayer-arm64、ijkplayer-armv5、ijkplayer-armv7a、ijkplayer-x86、ijkplayer-x86_64这些项目的src/main/libs/对应的名称 目录下分别生成libijkffmpeg.so、libijkplayer.so、libijksdl.so这三个so文件。
在ubuntu等Linux环境上编译ijkplayer,可以访问下面的地址: