引言
很早以前写过一篇关于FFMPEG的编译,然后把玩了下FFMPEG,发现挺不容易的,后来对视频这块就没再动过过。
最近项目涉及视频类,需重新拾起视频模块,找了很多开源项目,最终还是定位ijkplayer:B站开源的基于FFmpeg的轻量级Android/iOS视频播放器,网上资料较多,官方也有维护,封装了和mediaplayer差不多的接口,评价挺高,所以加进来试试水!
一、如何使用ijkplayer
Github地址 : https://github.com/Bilibili/ijkplayer
# required
allprojects {
repositories {
jcenter()
}
}
dependencies {
# required, enough for most devices.
compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'
# Other ABIs: optional
compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'
# ExoPlayer as IMediaPlayer: optional, experimental
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
}
只需将以上Gradle配置引入模块中即可。
但是这样引入会导致项目过于庞大,所以自行编译的优势就出来了,易于裁剪大小,还有一点ijkplayer默认不支持HTTPS。
二、如何编译ijkplayer并支持Https
①环境选择:Ubuntu、Linux、Mac
这里我们选择Win10子系统,相信还有人没用过吧,其实是Windows内置了Linux子系统了,无需开虚拟机、无需重启切系统。
好了,至于Win10子系统如何配置,请看:https://www.jianshu.com/p/13122abcec50 --Win10子系统下FFMPEG编译
有什么配置问题可以提问或者自行Google。
①编译ijkplayer
Step 1:安装Git与yasm
sudo apt-get install git
sudo apt-get install yasm
Step 2:下载,配置Android SDK与NDK
注意:NDK的最小配置需要>=r10e,而且需要的是Linux 64 位 (x86) 别忘了~
地址:https://developer.android.google.cn/ndk/downloads/
设置修改下:.bashrc文件,把SDK和NDK配置上:
命令:vim ~/.bashrc,打开并在最后加入以下配置(这个是我配置,大家可以把【】内容改为自己的)
#========AndroidHome========#
export ANDROID_SDK=/mnt/【 d/androidSDK/AndroidSDK/AndroidSDK(这个就是你电脑上SDK的路径)】
export PATH=$ANDROID_SDK/platform-tools:$PATH
export PATH=$ANDROID_SDK/tools:$PATH
export ANDROID_NDK=/mnt/【d/androidNDK/android-ndk-r10e(这个就是你电脑上NDK的路径) 】
export PATH=$ANDROID_NDK:$PATH
然后source .bashrc,键入ndk-build -v 看有没有东西输出
验证配置是否生效。这里不贴图了,啦啦啦~~~
Step 3:拉取ijkplayer源码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
拉取完默认的路径是:/mnt/【c/Users/zlq(User)】/ijkplayer-android/android/ijkplayer
Step 4:初始化android
./init-android.sh
Step 5:编译脚本配置
rm module.sh
ln -s module-lite.shmodule.sh
source module.sh
这个官方给的最小定制,就是自动化编译时的一些配置选项,比如支持什么协议啊,支持什么音视频类型等, 大家可以看github地址中的Before Build这一项,这里不多说了。
Step 6:初始化android支持Https
cd ..
./init-android-openssl.sh
Step 7:清除一波
cd android/contrib
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
Step 8:编译openssl
./compile-openssl.sh all
这一波够慢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Step 9:编译ffmpeg
./compile-ffmpeg.sh all
这里的话看你需要,如果想编译所有版本的so库,就跟all,如果是特定
CPU架构就跟cpu架构,比如:./compile-ffmpeg.sh armv7a
编译特定需要的肯定是比全部耗时短~
Step 10:编译ijkplayer
./compile-ijk.sh all
加all默认编译所有架构的so库,不加默认只编译armv7a架构!
到此,编译一个支持HTTPS的ijkplayer就完成了。
root@DESKTOP-9P4FC7N:/mnt/c/Users/zlq/ijkplayer-android/android/ijkplayer# ls
build.gradle gradlew ijkplayer-armv5 ijkplayer-exo ijkplayer-x86_64
gradle gradlew.bat ijkplayer-armv7a ijkplayer-java settings.gradle
gradle.properties ijkplayer-arm64 ijkplayer-example ijkplayer-x86 tools
网友评论