Android鉴腻,ijkplayer增加https協(xié)議支持迷扇,編譯運(yùn)行ijkplayer

前言

關(guān)于ijkplayer

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

項(xiàng)目地址:https://github.com/Bilibili/ijkplayer

如果是使用的 Windows 系統(tǒng)需要先用虛擬機(jī)裝個(gè) Linux 系統(tǒng)课锌,因?yàn)?ijkplayer 相關(guān)庫(kù)需要在 Linux 環(huán)境下編譯厨内。

相關(guān)文章

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

準(zhǔn)備工作:

1 ) 打開(kāi)終端渺贤,執(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 ) 通過(guò) Log 查看穩(wěn)定版的 tag,切換到穩(wěn)定版分支

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

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

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

5 ) 環(huán)境說(shuō)明

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

初始化

1 ) checkout ffmpeg code

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

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

2 ) checkout openssl code固棚,增加 https 協(xié)議支持需要用到該庫(kù)统翩。

// checkout openssl android源碼仙蚜,默認(rèn)從 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 默認(rèn)只生成 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 目錄下。此時(shí)編譯好的 so 是支持 https 協(xié)議的娶桦。

image

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

此時(shí)衷畦,把 ijkplayer/android/ijkplayer 導(dǎo)入 Android Studio 栗涂,ijkplayer-example 已經(jīng)可以正常運(yùn)行了。

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' // 這個(gè)是 ijkplayer 對(duì) exoplayer 的封裝霎匈,支持webm格式視頻戴差,看項(xiàng)目需求是否添加

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

我編譯好的庫(kù)

項(xiàng)目地址:https://coding.net/u/linchaolong/p/ijkplayer-https/git

image

修改編譯配置說(shuō)明

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

如果需要啟用/停用某個(gè)解碼器或功能只需要修改 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"

橫豎屏切換問(wèn)題

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

android:configChanges="orientation|keyboardHidden|screenSize"

相關(guān)資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市秘症,隨后出現(xiàn)的幾起案子照卦,更是在濱河造成了極大的恐慌,老刑警劉巖乡摹,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件役耕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡聪廉,警方通過(guò)查閱死者的電腦和手機(jī)瞬痘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)板熊,“玉大人框全,你說(shuō)我怎么就攤上這事「汕” “怎么了津辩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我丹泉,道長(zhǎng)情萤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任摹恨,我火速辦了婚禮,結(jié)果婚禮上娶视,老公的妹妹穿的比我還像新娘晒哄。我一直安慰自己,他們只是感情好肪获,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布寝凌。 她就那樣靜靜地躺著,像睡著了一般孝赫。 火紅的嫁衣襯著肌膚如雪较木。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天青柄,我揣著相機(jī)與錄音伐债,去河邊找鬼。 笑死致开,一個(gè)胖子當(dāng)著我的面吹牛峰锁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播双戳,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼虹蒋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了飒货?” 一聲冷哼從身側(cè)響起魄衅,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塘辅,沒(méi)想到半個(gè)月后晃虫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莫辨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年傲茄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沮榜。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盘榨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蟆融,到底是詐尸還是另有隱情草巡,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布型酥,位于F島的核電站山憨,受9級(jí)特大地震影響查乒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜郁竟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一玛迄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棚亩,春花似錦蓖议、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瘸彤,卻和暖如春修然,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背质况。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工愕宋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拯杠。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓掏婶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親潭陪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雄妥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,527評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,401評(píng)論 2 45
  • 前端時(shí)間項(xiàng)目中用到了視頻播放的功能依溯,沒(méi)辦法又不想使用系統(tǒng)自帶的播放器老厌,沒(méi)有為什么就是不想用,我也希望谷歌爸爸能出一...
    Ggx的代碼之旅閱讀 7,012評(píng)論 25 7
  • 今天早餐黎炉,香菜肉胡蘿卜香菇餃子+牛奶+火龍果 今天周末枝秤,好久沒(méi)包餃子,于是早上起床去菜場(chǎng)買了材料慷嗜。吃著自己包的餃子...
    雨棲遲閱讀 599評(píng)論 1 7