Ubuntu 18.04下編譯ijkplayer-android

Ijkplayer默認(rèn)支持的編解碼格式較少暇矫,且不支持https協(xié)議主之。若想獲得更多的編解碼和功能支持,就需要通過編譯源碼來實(shí)現(xiàn)李根。雖然網(wǎng)上相關(guān)的資料也有不少杀餐,但這些資料的質(zhì)量參差不齊,一路走來踩坑不斷朱巨。故總結(jié)此篇史翘,以作備忘,也希望能為需要的童鞋提供一些幫助冀续。
注:文末附有so文件的下載鏈接琼讽,不想自行編譯的小伙伴們,也可直接下載使用洪唐。

一钻蹬、編譯環(huán)境

  1. ubuntu-18.04.1 (教程: Win10使用VMware14安裝Ubuntu系統(tǒng))
  2. android-ndk-r10e (提取碼: cue8)
  3. android-sdk_r24.4.1 (提取碼: krys)
  4. jdk1.8.0_181 (提取碼: 78rd )
  5. ijkplayer-android k0.8.8

注: ndk最低支持r10e,且目前不支持r15c凭需,推薦使用r10e版本问欠;

二肝匆、編譯環(huán)境搭建

1. 安裝相關(guān)工具:

1. 更新: sudo apt-get update 
2. 安裝git: sudo apt-get install git 
3. 安裝yasm: sudo apt-get install yasm
4. 提供C/C++編譯環(huán)境: sudo apt-get install build-essential 

2. 配置JDK、SDK顺献、NDK環(huán)境變量:
在Ubuntu終端執(zhí)行命令:

sudo gedit /etc/profile  

此時(shí)會(huì)打開/etc/profile文件的編輯頁面旗国,在文件末尾添加JDK、SDK注整、NDK的環(huán)境變量能曾,參考如下:

#set jdk environment 校驗(yàn):java -version
export JAVA_HOME=/home/guan/Android/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

#set ndk environment 校驗(yàn):ndk-build -v
export ANDROID_NDK=/home/guan/Android/android-ndk-r10e
export PATH=$ANDROID_NDK:$PATH 
 
#set sdk environment 校驗(yàn):adb version
export ANDROID_HOME=/home/guan/Android/android-sdk-linux
export PATH=${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:$PATH 

保存文件修改后,回到終端執(zhí)行如下命令肿轨,使配置的環(huán)境變量立即生效:

source /etc/profile 

校驗(yàn):分別執(zhí)行java -version寿冕、ndk-build -vadb version來檢驗(yàn)JDK椒袍、NDK和SDK配置的環(huán)境變量是否生效驼唱。若出現(xiàn)如下圖所示的信息,則說明對應(yīng)的配置生效:

JDK
NDK
SDK

注意:相比Windows版本的SDK驹暑,Linux版本的SDK會(huì)缺少一些工具曙蒸,這些工具需要我們手動(dòng)去下載。執(zhí)行android avd命令岗钩,打開SDK Manager,下載最新的 Android SDK Tools肖油、Android SDK Platform-toolsAndroid SDK Build-tools兼吓,然后再下載一個(gè)最新的 Android SDK Platform 即可~

3. 使用bash代替dash來執(zhí)行shell腳本:
執(zhí)行命令:sudo dpkg-reconfigure dash,彈出如下彈框時(shí)選擇:<否>

三森枪、編譯ijkplayer-android

  1. 拉取代碼:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android  
//進(jìn)入根目錄
cd ijkplayer-android  
//切換到穩(wěn)定分支
git checkout -B latest k0.8.8
  1. 修改編譯配置文件 (可選項(xiàng)视搏,若不修改則默認(rèn)使用module-lite.sh) :
    官方給我們提供了三個(gè)模板module-default.shmodule-lite.shmodule-lite-hevc.sh县袱,默認(rèn)使用module-lite.sh進(jìn)行編譯浑娜,它支持的編解碼格式較少,so文件也較小 (5M左右)式散,module-default.sh支持的編解碼格式最全筋遭,so文件也最大(12M左右)。也可在module.sh文件中暴拄,通過更改enable/disenable自行修改漓滔。
  • If you prefer more codec/format
cd config
rm module.sh
ln -s module-default.sh module.sh
cd .. 
  • If you prefer less codec/format for smaller binary size (include hevc function)
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
cd ..
  • If you prefer less codec/format for smaller binary size (by default)
cd config
rm module.sh
ln -s module-lite.sh module.sh
cd ..

注意:若使用module-default.sh替代module.sh文件,則執(zhí)行./compile-ffmpeg.sh all編譯時(shí)會(huì)報(bào)錯(cuò):fatal error: linux/perf_event.h: No such file or directory
解決方案是在module.sh文件末尾添加一行:export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

  1. 初始化乖篷,拉取ffmpeg:
./init-android.sh
  1. 拉取openssl Android源碼响驴,使其支持Https:
./init-android-openssl.sh
  1. 編譯各個(gè)平臺的編譯openssl和ffmpeg:
cd android/contrib
//編譯各平臺的openssl
./compile-openssl.sh clean
./compile-openssl.sh all 
//編譯ffmpeg軟解碼庫
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
  1. 編譯ijkplayer native code:
cd ..
./compile-ijk.sh all

編譯完成后,即可在相應(yīng)的CPU架構(gòu)目錄下找到對應(yīng)的so庫文件撕蔼,如下圖:

附so文件下載鏈接:
默認(rèn)配置module-lite.sh對應(yīng)的so文件(提取碼:73nz)豁鲤;
支持較全格式module-default.sh對應(yīng)的so文件(提取碼:kwyy)秽誊;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市琳骡,隨后出現(xiàn)的幾起案子锅论,更是在濱河造成了極大的恐慌,老刑警劉巖日熬,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棍厌,死亡現(xiàn)場離奇詭異,居然都是意外死亡竖席,警方通過查閱死者的電腦和手機(jī)耘纱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毕荐,“玉大人束析,你說我怎么就攤上這事≡餮牵” “怎么了员寇?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長第美。 經(jīng)常有香客問我蝶锋,道長,這世上最難降的妖魔是什么什往? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任扳缕,我火速辦了婚禮,結(jié)果婚禮上别威,老公的妹妹穿的比我還像新娘躯舔。我一直安慰自己,他們只是感情好省古,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布粥庄。 她就那樣靜靜地躺著,像睡著了一般豺妓。 火紅的嫁衣襯著肌膚如雪惜互。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天琳拭,我揣著相機(jī)與錄音载佳,去河邊找鬼。 笑死臀栈,一個(gè)胖子當(dāng)著我的面吹牛蔫慧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播权薯,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姑躲,長吁一口氣:“原來是場噩夢啊……” “哼睡扬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起黍析,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卖怜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后阐枣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體马靠,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年蔼两,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甩鳄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡额划,死狀恐怖妙啃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俊戳,我是刑警寧澤揖赴,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站抑胎,受9級特大地震影響燥滑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阿逃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一铭拧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盆昙,春花似錦、人聲如沸焊虏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诵闭。三九已至炼团,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疏尿,已是汗流浹背瘟芝。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褥琐,地道東北人锌俱。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像敌呈,于是被迫代替她去往敵國和親贸宏。 傳聞我的和親對象是個(gè)殘疾皇子造寝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 懶人so庫如果有童鞋不想編譯,在這里提供一個(gè)已經(jīng)編譯好了的so庫吭练,可自行去下載使用诫龙,https://github....
    代碼很玄學(xué)閱讀 760評論 0 0
  • 引言 很早以前寫過一篇關(guān)于FFMPEG的編譯,然后把玩了下FFMPEG鲫咽,發(fā)現(xiàn)挺不容易的签赃,后來對視頻這塊就沒再動(dòng)過過...
    Kndroid閱讀 3,474評論 7 5
  • 1.下載WMware虛擬機(jī)并安裝激活 2.下載ubuntu系統(tǒng)并在WMware中新建虛擬機(jī)安裝該系統(tǒng),開機(jī)在HOM...
    兣甅閱讀 879評論 0 0
  • 引言:主要是因?yàn)閯傞_始接觸的時(shí)候整個(gè)人都是懵逼呵呵的分尸。時(shí)間:2018年03月27日作者:JustDo23官方:ht...
    JustDo23閱讀 2,267評論 1 0
  • 前幾周某人去菜市場回來锦聊,興高采烈的告訴我他買了兩個(gè)自己喜歡吃的地瓜(此地瓜并非是我們所說的紅薯,而是學(xué)名叫做豆薯的...
    花緣過客閱讀 670評論 5 6