使用说明
首先,我们知道引入ijkplayer到项目的方式有两种
一、第一种是gradle的引用
# 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'
}
通过这种方式引入只能提供基本的编码格式以及功能,并且不支持https协议。如果需要更多功能和编码格式支持,则需要通过编译源码实现
二、第二种编译源码的方式
编译源码
1.从github中拉取代码,并且cd到代码的目录下
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
2.选择k0.8.8分支
git checkout -B latest k0.8.8
3.执行ijkplayer项目中的init-android.sh进行初始化
包括了把ffmpeg的代码拉取到本地等操作(时间有点长),下载过程中extra\ffmpeg文件夹的内容会变化
./init-android.sh
由于是从github上拉取ffmpeg代码,网速不好的情况下,时间会很长,可能会遇到下面的错误提示
remote: Enumerating objects: 539029, done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
错误原因:由于Http协议错误,当Pull或者Clone的时候
因为curl的postBuffer默认值太小的原因,而项目可能本身比较大,所以下载失败。可以尝试用下面的方法解决:
解决方案: 在Git Bash Here 中执行:
(1) git config --global http.postBuffer 524288000
解析:相当于把curl的postBuffer的值修改的大一些。524288000的单位是B,相当于500MB。
(2) git config –list
解析:查看配置,看看新配置是否生效
(3) 重新执行上面init的方法
4.如果视频播放需要支持Https协议,还需要执行如下命令
./init-android-openssl.sh
5.进入android/contrib目录下,clean,然后编译一下ffmpeg软解码库,各个平台的openssl
cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all
在执行complie-opensl.sh all的时候可能会遇到下面的问题
ERROR: Failed to create toolchain.
解决办法:替换NDK版本为r14d就可以了。这里需要注意的是脚本里代码限制NDK版本是 11-14,最好选用这个范围的版本。不然会报:You need the NDKr10e or later
6.如果需要更多的编解码格式,需要先执行下面的命令
cd ../..
cd config
rm module.sh
ln -s module-lite.sh module.sh
cd ..
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
7.使用如下的命令编译ijkplayer即可
cd ..
./compile-ijk.sh all
编译结束之后,你就可以按照下面的路径找到你要的.so文件了,
放到项目中结合下面的依赖就可以使用了
api 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'