使用說明
首先,我們知道引入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、然後繼續執行git pull等命令即可。
如果還是不行可以繼續加大postBuffer的數值嘗試,或者換網速好點的地方。
當然,還有一種方法可以做到很快,就是將github上的代碼導入到碼雲上面,然後修改init-android.sh腳本里的路徑,具體可以參考這裏,下載的速度基本在幾M~十幾M。這裏建議最好自己按步驟導入碼雲,不要使用前人的,前人的代碼比較老,編譯的時候會出現不可預知的問題。
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'
感謝
https://blog.csdn.net/xiangzhihong8/article/details/80169571