linux 環境編譯 ijkplayer so 庫實踐

1、前言

公司的一個項目新項目涉及到音頻播放的內容,音頻格式從常見的 mp3 到冷門的無損音樂 ape 都有,琢磨了很久,最後選中了 B 站的開源庫 ijkplayer ,但是 ijkplayer 提供的默認 so 庫並不支持無損音樂,而我在網上找了許久也沒有找到其餘人編譯的現成擴展庫,就只能本身來動手了,折騰了許久總算是搞定了,此處我就寫下本身的實現步驟以幫助後人,文章末尾也提供了已編譯好的 so 庫,須要的讀者請自取linux

開發環境:Linux (Deepin) NDK 版本:android-ndk-r14b ijkplayer 版本:k0.8.8android

2、準備工做

2.一、安裝 NDK

這裏我選擇使用的 NDK 版本是 android-ndk-r14b-linux-x86_64 ,將它先移動到 usr 文件夾下新建的 android 文件夾內git

解壓 ndk 壓縮包到 android 目錄下github

2.二、安裝 Android SDK

我這裏是選擇安裝 Android Studio 來使用其附帶的 Android SDK ,理論上單獨只安裝 Android SDK 應該也是能夠的。我使用的 Android Studio 版本是 android-studio-ide-191.5791312-linuxshell

將壓縮包移動到 usr/android 文件夾內,並解壓android-studio

啓動 Android Studio ,以後就是常規的一些配置了,將 SDK 安裝在當前新建的 android-sdk 目錄下bash

2.三、安裝 Git

安裝 Git 用於下載及更新 ijkplayer 以及其依賴庫架構

sudo apt-get update //或許須要
  sudo apt-get install git
複製代碼

2.四、ijkplayer

下載 ijkplayer 源碼,並切換到當前最新的 k0.8.8 分支下ide

git clone https://github.com/Bilibili/ijkplayer.git
git checkout -B latest k0.8.8
複製代碼

4、開始編譯

4.一、配置編譯腳本

ijkplayer 的 config 文件夾內的 module-default.sh 文件配置了編譯默認支持的音頻格式,enable 表明啓用,disable 表明禁用,根據項目須要修改 module-default.sh 文件後,將之做爲當前的配置腳本學習

sudo rm module.sh
ln -s module-default.sh module.sh
source module.sh
複製代碼

4.二、初始化

在 ijkplayer 源代碼目錄下運行如下命令進行初始化以便下載一些依賴庫,網速緣由可能須要好久

sudo ./init-android.sh
複製代碼

4.三、支持 https

ijkplayer 默認不支持 https 連接,須要運行如下命令使其支持

./init-android-openssl.sh
複製代碼

4.四、編譯 ffmpeg

cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
複製代碼

若是在運行了以上命令後控制檯提示報了以下提示,那麼這是由於 compile-ffmpeg.sh 不知道當前系統安裝的 NDK 路徑致使的

ANDROID_NDK=
You must define ANDROID_NDK before starting.
They must point to your NDK directories.
複製代碼

能夠經過在 ijkplayer/android/contrib/tools/do-compile-ffmpeg.sh 文件的開頭定義 NDK 路徑來解決

ANDROID_NDK=/usr/android/android-ndk-r14b
複製代碼

以後,從新運行命令便可

4.五、編譯 ijkplayer

cd ..
./compile-ijk.sh all
複製代碼

報錯的話同樣須要在 compile-ijk.sh 文件頭部定義 Android SDK 和 NDK 的路徑

若是編譯成功,則會在 android 文件夾內生成一個 ijkplayer 工程,當中包含了各個架構的 so 庫,到此那就大功告成了

將各個 CPU 架構下對應的 so 庫拷貝到本身的項目中,至此就得到了所須要的擴展 so 庫

5、so 庫下載

編譯好的 so 庫我已經上傳到 GitHub 了,項目主頁:ijkplayer-so-extend

經測試,能夠正常播放 wav 、ape 等格式的音頻

本文已收錄至個人學習筆記合輯:JavaKotlinAndroidGuide

github.com/leavesC/Jav…

相關文章
相關標籤/搜索