上手一次完整的Ijkplayer源碼編譯(mac環境)

使用說明

首先,我們知道引入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

https://www.jianshu.com/p/a57bbdd78798

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章