Android引入IjkPlayer無法播放mkv格式視頻的解決方案

寫在前面

項目中直接引用或者直接編譯源碼得到的ijkplayer在播放mkv文件時出現(-10000)的錯誤,去項目github查看了才知道,默認是不支持mkv和rmvb格式視頻的播放的。
用了一天時間解決(為什么用了一天,因為我蠢啊),這里記錄一下解決的方法(官方上面其實已經有了詳細的教程,無奈我當時沒有很認真看。),這里為我自己這個新手做個記錄:
仍然是采用編譯源碼的方式引入,只是需要按照官方的方法更改一下腳本文件
ijkplayer官方地址:https://github.com/Bilibili/ijkplayer
運行系統:Mac OS

第一步 安裝 homebrew, git, yam,ndk

這個網上教程很多,要不就不寫了吧。。。。


ndk的版本不要使用15,可以去網上下一個14的版本,否則可能會出現編譯錯誤的狀況。
ndk r14下載地址:https://developer.android.google.cn/ndk/downloads/index.htm

第二步 進行源碼的下拉

  • 在終端內輸入以下命令:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.4
./init-android.sh

第三步 修改編譯ffmpeg用的腳本文件

  • 刪除默認的腳本文件,復制module-default.sh腳本文件,將復制副本更改為默認腳本文件名module.sh
cd config
rm module.sh
ln -s module-default.sh module.sh
cd ..

第四步 編譯源碼

cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

cd ..
./compile-ijk.sh all
若執行編譯失敗,提示
LOCAL_SRC_FILES points to a missing file

嘗試更換ndk版本為r14

若執行編譯失敗,提示
Android NDK: android-9 is unsupported. Using minimum supported version android-14。

嘗試去對應錯誤文件夾(如android/ijkplayer/ijkplayer-armv5/src/main下)修改AndroidManifest.xml中 android:minSdkVersion="9"改為 android:minSdkVersion="14";

同時對應的jni文件下的Application.mk 中 APP_PLATFORM := android-9 改為
APP_PLATFORM := android-14。

第五步 項目中加入對應的so庫和引用

  • 編譯完成后我們將ijkplayer項目導入Android Studio中運行一下,
    導入這個操作一定要做,不然不會生成
    ijkplayer-java-release.aar文件
    導入的操作如下(選中build.gradle文件):


  • 之后將我們所需架構所對應的包含so文件的文件夾(例:ijkplayer-x86/src/main/libs/下的x86文件夾)和ijkplayer-java-release.aar文件(在ijkplayer-java/build/output/aar文件夾下)拷貝到我們的項目libs目錄下

  • 然后在build.gradle文件中添加

android{
    ...
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
            }
}
repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
        }
}
dependencies {
    ...
    compile(name: 'ijkplayer-java-release', ext: 'aar')
    ...
}

到此就搞定了,然后使用就好了,怎么使用,這個網上教程也很多,我也不講了吧。。。。。。。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容