不過正因為ijkplayer多年未更新,按照導包方式僅能在較老的平臺上編譯執行,比如ijkplayer支援的Android平臺僅限於API 9~23,支援的iOS平臺僅限於iOS 7.0~10.2.x。為了讓ijkplayer能夠在更新的開發環境上正常執行,需要先在Linux系統上交叉編譯ijkplayer在Android平臺上的so檔案,才能在App工程中匯入並呼叫so庫。下面介紹如何在Linux編譯ijkplayer的so庫。
一、準備Linux編譯環境
首先在Linux系統執行下面命令安裝編譯工具。
接著執行下面命令臨時調整tmp分割槽大小,確保系統的臨時空間充足,避免解壓大檔案失敗。
二、安裝Android的SDK和NDK
依次執行下列命令下載並安裝Android的SDK,注意不要用太高版本的SDK,因為ijkplayer沒有適配高版本的SDK。
依次執行下列命令下載並安裝Android的NDK,注意不要用太高版本的NDK,因為ijkplayer沒有適配高版本的NDK,官方推薦採用r10e版本的NDK即可。
執行下面的環境變數設定命令,分別設定SDK的環境變數ANDROID_SDK,以及NDK的環境變數ANDROID_NDK。
三、下載並編譯ijkplayer
先執行以下命令下載ijkplayer的原始碼包。
再執行以下命令檢查並初始化ijkplayer的Android編譯環境。
然後依次執行下列命令,分別編譯ijkplayer需要的openssl庫和ffmpeg庫,以及ijkplayer的so庫。之所以在三個指令碼後面新增“ arm64”,是為了只編譯適配arm64指令的so檔案。
一切順利的話,即可在ijkplayer/android/ijkplayer/ijkplayer-arm64/src/main/libs/arm64-v8a目錄下看到編譯好的三個so庫:libijkffmpeg.so、libijkplayer.so、libijksdl.so。把包含三個so檔案在內的整個libs目錄複製到App工程的libs目錄,即可完整ijkplayer的so庫匯入工作。
更多詳細的FFmpeg開發知識參見