Android,ijkplayer增加https協(xié)議支持,編譯運行ijkplayer

前言

關(guān)于ijkplayer

基于 FFmpeg n3.1 的 Android/iOS 視頻播放器,支持 MediaCodec, VideoToolbox,支持 RTMP/HTTP/HTTPS 視頻流播放,支持本地視頻播放。

項目地址:https://github.com/Bilibili/ijkplayer

如果是使用的 Windows 系統(tǒng)需要先用虛擬機裝個 Linux 系統(tǒng),因為 ijkplayer 相關(guān)庫需要在 Linux 環(huán)境下編譯。

相關(guān)文章

VMWare 安裝 Ubuntu 教程,Linux 下 Android 開發(fā)環(huán)境搭建

準備工作:

1 ) 打開終端,執(zhí)行下面命令,安裝 git 和 yasm

sudo apt-get install git
sudo apt-get install yasm

2 ) clone ijkplayer code

// 把代碼clone到本地
git clone https://github.com/Bilibili/ijkplayer ijkplayer

3 ) 通過 Log 查看穩(wěn)定版的 tag,切換到穩(wěn)定版分支

image
// 切換到穩(wěn)定版分支
git checkout -B k0.6.2.1 k0.6.2.1

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

在開始編譯之前需要先配置`ANDROID_SDK` 與`ANDROID_NDK`環(huán)境變量。Linux 下如何配置環(huán)境變量可以參考上面那篇文章。

5 ) 環(huán)境說明

  • 系統(tǒng):Ubuntu 16.04
  • NDK:android-ndk-r12b(建議使用 r10e 以上版本)

初始化

1 ) checkout ffmpeg code

// 進入工程根目錄
cd ijkplayer

// checkout ffmpeg 源碼,默認從 https://github.com/Bilibili/FFmpeg.git checkout
./init-android.sh

2 ) checkout openssl code,增加 https 協(xié)議支持需要用到該庫。

// checkout openssl android源碼,默認從 https://github.com/Bilibili/openssl.git checkout
./init-android-openssl.sh

編譯

1 ) 編譯 openssl

// 首先 cd 到 ijkplayer/android/contrib 目錄下,Android下編譯腳本就放在該目錄下
cd android/contrib

// 編譯 openssl
./compile-openssl.sh clean
./compile-openssl.sh all

2 ) 編譯 ffmpeg

./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

3 ) 編譯 ijkplayer native code

// 返回到 ijkplayer/android 目錄
cd ..

// 編譯生成各CPU架構(gòu)的so,如果不加 all 默認只生成 armv7a 架構(gòu)的 so
// 編譯指定架構(gòu)的so:compile-ijk.sh armv7a,具體參考 .sh 文件中的 Usage
./compile-ijk.sh all

編譯完成后 so 就放在 ijkplayer/android/ijkplayer/ijkplayer-xxx/src/main/libs 目錄下。此時編譯好的 so 是支持 https 協(xié)議的。

image

ijkplayer/android/ijkplayer 是一個 Android Studio 工程,里面有 ijkplayer 的 example 和各架構(gòu)的 Library Project。

此時,把 ijkplayer/android/ijkplayer 導入 Android Studio ,ijkplayer-example 已經(jīng)可以正常運行了。

4 ) 在自己的工程中引用 ijkplayer 和自己編譯的 so

(1) 在 build.gradle 添加 ijkplayer-java 依賴

compile 'tv.danmaku.ijk.media:ijkplayer-java:0.6.2'

// compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.6.2' // 這個是 ijkplayer 對 exoplayer 的封裝,支持webm格式視頻,看項目需求是否添加

(2) 在工程 src\main 目錄下新建一個 jniLibs 目錄并把 so 拷貝到對應架構(gòu)名稱的目錄下。

我編譯好的庫

項目地址:https://coding.net/u/linchaolong/p/ijkplayer-https/git

image

修改編譯配置說明

ijkplayer的編譯配置腳本在 ijkplayer/config 目錄下。

如果需要啟用/停用某個解碼器或功能只需要修改 enable/disable

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=mp3_header_decompress"

修改后

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-bsf=mp3_header_decompress"

橫豎屏切換問題

默認情況下,Activity 橫豎屏切換會重新創(chuàng)建,播放器也會被銷毀重新創(chuàng)建。為了防止這種情況,在 AndroidManifest.xml 中 Activity 添加如下配置,表示下面屬性變化時把事件傳遞給該 Activity 的 onConfigurationChanged 方法處理。

android:configChanges="orientation|keyboardHidden|screenSize"

相關(guān)資料

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

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

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