在Ubuntu下編譯IjkPlayer-android

前端時間項(xiàng)目中用到了視頻播放的功能占遥,沒辦法又不想使用系統(tǒng)自帶的播放器,沒有為什么就是不想用痘煤,我也希望谷歌爸爸能出一款最基礎(chǔ)的播放器控件凑阶,然后可以靈活的自己定制UI,唉衷快!經(jīng)過一番尋找終于找到了IjkPlayer宙橱,這是Bilibili的一款基于ffmpeg視頻編解碼庫的播放器控件,看起來挺不錯的蘸拔。此外還發(fā)現(xiàn)了一篇二次封裝的UI效果 基于ijkplayer的視頻播放器师郑,仿Bilibili客戶端,集成沉浸式全屏都伪、彈幕呕乎、觸屏控制、視頻源切換等功能 封裝的不錯陨晶。于是采用這個來做自己的播放器控件了猬仁。但實(shí)踐的過程中還是有不少坑要踩的,比如視頻的解碼格式的支持先誉,安卓各CPU平臺的兼容湿刽,以及https的支持這些都是我遇到的問題,網(wǎng)上的很多庫都是對這些支持都是不全的褐耳,怎么辦呢诈闺?還是自己動手豐衣足食,重新去編譯一遍Ijkplayer的源碼铃芦。找到 ijpliayer github 地址看到它的Readme中有編譯過程的描述,嗯!大致就醬紫雅镊, 不過還是有些需要注意的襟雷。下面帶大家一起一步一步的重新編譯。

  • 準(zhǔn)備工作

這里我使用在ubuntu下去編譯它仁烹,沒有為什么就是方便耸弄。
1.下載virtualbox虛擬機(jī)官網(wǎng)地址
2.下載unbutu17.04鏡像文件
3.下載winSCP百度搜一下就有,用來方便在win和unbutu之間傳輸文件用

  • 開始安裝工作

當(dāng)系統(tǒng)安裝完成以后卓缰,我們進(jìn)入桌面计呈,開始編譯ijkplayer。

1.首先先去下載androidNDK 以及SDK

android NDK選擇Linux的
android SDK選擇一個高一點(diǎn)的Linux版本就好征唬。
下載完成之后打開終端
Ctrl+Alt+T
我們在home\Downloads目錄下會看到我們下載的ndk和sdk壓縮包我們把它們解壓出來捌显,一個是.zip的另一個是.tgz的。
cd ~/Downloads
unzip xxx.zip
tar zxvf xxx.taz
將兩個壓縮文件解壓到當(dāng)前目錄即可总寒。

2.下載openjdk

sudo apt-get install openjdk-8-jre-headless
之后會自動安裝好扶歪。

3.配置SDK和NDK環(huán)境變量

新下載好的linux版本的sdk缺少一點(diǎn)東西,需要我們自己去下摄闸,好在官方readme中已經(jīng)說明了打開和windows中的sdkmanager一樣的東西击罪,在Linux中不叫這個名字,叫做android.sh 在tools目錄下贪薪。說明如下
To start the SDK Manager,please execute the program "android".
啟動android sdk manager
sh ~/Downloads/android-sdk-linux/tools/android
之后就是和windows一樣了。
我們下載最新的Android SDK Tools和Android SDK Platform-tools以及Android SDK Build-tools眠副,在下載一個最新的Android SDK Platform即可画切。
配置環(huán)境變量
sudo gedit /etc/profile
/etc/profile 的文件是讓所有用戶都可用。
在配置文件末尾加入如下部分并保存:

export PATH=~/Downloads/android-sdk-linux/platform-tools:$PATH
export PATH=~/Downloads/android-sdk-linux/tools:$PATH
export ANDROID_NDK=~/Downloads/android-ndk-r14b
export PATH=~/Downloads/android-ndk-r14b:$PATH

讓環(huán)境變量立即生效
source /etc/profile
你可以用簡單的命令來測試一下是否生效了如
adb -version

3.安裝一些軟件

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

4.下載ijkplayer-android

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

  • 5.開始編譯

cd ijkplayer-android
先做初始化
./init-android.sh
初始化從網(wǎng)上提取ffmpeg庫囱怕,有段時間霍弹,可以先去泡杯茶。
如果視頻播放需要支持Https協(xié)議的還需要執(zhí)行一遍如下初始化腳本娃弓。
./init-android-openssl.sh

1.編譯各個平臺的openssl

cd android/contrib
./compile-openssl.sh clean
之后最好一個一個的對應(yīng)CPU平臺去編譯openssl,也能一次全部編譯典格,但是我之前出過問題,后來單獨(dú)編譯就好了台丛∷=桑可以更具自己的需求分別選擇執(zhí)行下面步驟,過程也是挺漫長的挽霉。

./compile-openssl.sh armv7a
./compile-openssl.sh armv5a
./compile-openssl.sh arm64
./compile-openssl.sh x86
./compile-openssl.sh x86_64
2.編譯各個平臺的ffmpeg

根據(jù)官方的說法防嗡,如果我們需要更多的編解碼格式,得先執(zhí)行下面的命令


ijkplayer

回到ijkplayer-android目錄并鏈接module文件

cd ../..
cd config/
rm module.sh
ln -s module-default.sh module.sh
cd ..
cd android/contrib/
./compile-ffmpeg.sh clean

其實(shí)打開module.sh里面是各個編解碼的格式侠坎,可以在里面開啟或禁用
如果需要啟用/停用某個解碼器或功能只需要修改 enable/disable即可蚁趁。
之后最好一個一個的對應(yīng)CPU平臺去編譯ffmpeg,也能一次全部編譯,但是我之前出過問題实胸,后來單獨(dú)編譯就好了他嫡》伲可以更具自己的需求分別選擇執(zhí)行下面步驟,過程也是挺漫長的钢属。

./compile-ffmpeg.sh armv7a
./compile-ffmpeg.sh armv5a
./compile-ffmpeg.sh arm64
./compile-ffmpeg.sh x86
./compile-ffmpeg.sh x86_64
3.編譯ijkplayer native代碼

做法也是一個一個平臺去編譯它徘熔。不要圖省事一起編譯。

cd ..
./compile-ijkplayer.sh armv7a
./compile-ijkplayer.sh armv5a
./compile-ijkplayer.sh arm64
./compile-ijkplayer.sh x86
./compile-ijkplayer.sh x86_64

編譯好后就能在android/ijkplayer目錄中對于的文件夾里找到了這里截取一段x86文件夾的圖

ijkplayer-x86

新版的編譯后新增了一個libijksound.so文件署咽,之前是沒有的近顷,通常libijkffmpeg.so 有我圖中這么大就差不多了,不同的平臺大小都不一樣宁否。其他兩個文件相對來是就幾百k窒升。
到這里一切都o(jì)k了。我們可以使用winSCP工具把編譯好的ijkplayer傳送到win上然后使用慕匠。

歡迎共同探討更多安卓饱须,java,c/c++相關(guān)技術(shù)QQ群:392154157
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末台谊,一起剝皮案震驚了整個濱河市蓉媳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锅铅,老刑警劉巖酪呻,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盐须,居然都是意外死亡玩荠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門贼邓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阶冈,“玉大人,你說我怎么就攤上這事塑径∨樱” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵统舀,是天一觀的道長匆骗。 經(jīng)常有香客問我,道長誉简,這世上最難降的妖魔是什么绰筛? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮描融,結(jié)果婚禮上铝噩,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好骏庸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布毛甲。 她就那樣靜靜地躺著,像睡著了一般具被。 火紅的嫁衣襯著肌膚如雪玻募。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天一姿,我揣著相機(jī)與錄音七咧,去河邊找鬼。 笑死叮叹,一個胖子當(dāng)著我的面吹牛艾栋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛉顽,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蝗砾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了携冤?” 一聲冷哼從身側(cè)響起悼粮,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎曾棕,沒想到半個月后扣猫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翘地,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年苞笨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片子眶。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖序芦,靈堂內(nèi)的尸體忽然破棺而出臭杰,到底是詐尸還是另有隱情,我是刑警寧澤谚中,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布渴杆,位于F島的核電站,受9級特大地震影響宪塔,放射性物質(zhì)發(fā)生泄漏磁奖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一某筐、第九天 我趴在偏房一處隱蔽的房頂上張望比搭。 院中可真熱鬧,春花似錦南誊、人聲如沸身诺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霉赡。三九已至橄务,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穴亏,已是汗流浹背蜂挪。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗓化,地道東北人棠涮。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像蟆湖,于是被迫代替她去往敵國和親故爵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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