基于win10子系統(tǒng)ijkplayer全量編譯(支持所有格式)流程

1 環(huán)境搭建

1.1 編譯環(huán)境說明

ijkplayer目前支持linux,mac平臺編譯。windows平臺暫不支持。如果沒有l(wèi)inux環(huán)境,可以使用win10自帶的子系統(tǒng)ubuntu進(jìn)行編譯。win10子系統(tǒng)開啟方法參見:http://www.itdecent.cn/p/58090215bda8也可自行度娘。

? ? 本文檔主要以win10子系統(tǒng)ubuntu為編譯環(huán)境進(jìn)行說明。其它平臺都比win10子系統(tǒng)簡單,這里就不做具體說明。

1.2 ijkplayer版本說明

ijkplayer默認(rèn)版本支持的音視頻格式和網(wǎng)絡(luò)協(xié)議有限,基本上不滿足產(chǎn)品需要(默認(rèn)支持:mp4、flv、f4v、mkv等)。對于wav、m3u8、https協(xié)議等都不支持。需要自己編譯ijkplayer源碼。編譯后的庫的大小會有所增加。請根據(jù)自己的需要選擇編譯。全量支持的庫大小大概有30M左右。

1.3 環(huán)境準(zhǔn)備

NDK:android-ndk-r14b-linux-x86_64(ijkplayer僅支持r10e以上r14b及以下的NDK版本),盡量不要使用最新版本的NDK。本人使用r14b驗(yàn)證通過,其它版本沒有驗(yàn)證。

SDK:https://developer.android.google.cn/請自行下載android sdk

2 編譯步驟

2.1 安裝組件

$ sudo apt-get install vim openssh-server git curl wget tar unzip build-essential openjdk-8-jdk yasm python

說明:如果安裝失敗,請先升級ubuntu:sudo apt-get update

2.2 配置環(huán)境變量

2.2.1 NDK環(huán)境變量配置

$ sudo unzip android-ndk_r14b-linux-x86_64.zip? //在win10子系統(tǒng)中,先進(jìn)入到windows環(huán)境中的ndk下載目錄。cd /mnt/e/XXX? ? e代表windows盤符

$ sudo mv android-ndk-r13b /opt/Android/? ? //如果沒有Android目錄,可以手動創(chuàng)建mkdir Android

添加NDK到環(huán)境變量中

$ sudo vim /etc/profile

在文件末尾添加如下內(nèi)容,并保存退出

export ANDROID_NDK=/opt/Android/android-ndk-r14b

export PATH=$PATH:$ANDROID_NDK

2.2.2 SDK環(huán)境變量配置

android SDK的環(huán)境變量配置與NDK配置一樣,參見2.2.1??

完成后重啟Ubuntu或者在終端中source一下profile,建議重啟ubuntu,以免source不生效,后面編譯報錯。

2.3 代碼克隆

git clone https://github.com/Bilibili/ijkplayer ijkplayer-android

cd ijkplayer-android

git checkout -B local_k0.8.8 k0.8.8 //切換分支,取k0.8.8分支。local_k0.8.8是本地分支,可以自己命名。切記一定要切換到k0.8.8分支,master或其他分支后續(xù)的編譯會報錯

2.4 ijkplayer編譯步驟

2.4.1 編譯配置

ijkplayer有三種編譯配置

1)支持較多格式(完全編譯,幾乎所有格式都支持了),文件較大。本人使用的此種方式。最終的大小估計(jì)有30M左右。

$ cd config

$ rm module.sh

$ ln -s module-default.sh module.sh

2)支持較少格式,包含hevc

$ cd config

$ rm module.sh

$ ln -s module-lite-hevc.sh module.sh

3)支持較少格式(默認(rèn))

$ cd config

$ rm module.sh

$ ln -s module-lite.sh module.sh

2.4.2 ffmpege和openssl編譯

下載源碼:

開源項(xiàng)目中并沒有直接包含ffmpeg和openssl源碼,所以編譯前需要先下載

// 進(jìn)入工程根目錄

$ cd ijkplayer-android

// checkout ffmpeg 源碼,ffmpeg有300多M,下載可能會有點(diǎn)慢

$ ./init-android.sh

// checkout openssl android源碼

$ ./init-android-openssl.sh

編譯

// 編譯openssl(用于支持https)

$ cd android/contrib

$ ./compile-openssl.sh clean

$ ./compile-openssl.sh all

// 編譯 ffmpeg

$ ./compile-ffmpeg.sh clean

$ ./compile-ffmpeg.sh all

如果在編譯ffmpeg時有報:fatal error: linux/perf_event.h: No such file or directory錯誤,那么在ijkplayer-android/config/module.sh的末尾添加如下配置,再重新編譯即可

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bzlib"

2.4.3 ijkplayer編譯

// 編譯ijkplayer

$ cd ..

$ ./compile-ijk.sh all

編譯完成后的包在:ijkplayer-android/android/ijkplayer目錄下。

2.5 集成

集成:

? ? ijkplayer-android/android/ijkplayer目錄是一個 Android Studio 工程,經(jīng)過編譯后即是一個完整的工程,可以直接拷貝出來用Android Studio打開使用。

? ? ijkplayer-example:示例

? ? ijkplayer-java:java層的庫(必須的)

? ? ijkplayer-xxx:各種架構(gòu)的so庫

? ? ijkplayer-exo:對ExoPlayer的封裝

? ?也可以將lib工程中的so拷貝到新建的工程中,只需要依賴對應(yīng)版本的java層的庫即可,這里是k0.8.8

implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'? ? //也可以將ijkplayer-java源碼直接拷貝到工程中。


ijkplayer全量包下載地址:https://github.com/whtnlily/MyIjkplayer.git

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容