IJKPlayer初識-編譯與使用

首先認(rèn)識下IJKPlayer

<p>
IJKPlayer 是一個(gè)基于 ffplay 的輕量級 Android/iOS 視頻播放器。API 易于集成县踢;編譯配置可裁剪邻悬,方便控制安裝包大小润梯;支持 硬件加速解碼,更加省電甥厦。而DanmakuFlameMaster 架構(gòu)清晰纺铭,簡單易用,支持多種高效率繪制方式選擇刀疙,支持多種自定義功能設(shè)置舶赔。

實(shí)現(xiàn)的特性有:

  • 移除 FFmpeg 中不常用的特性以減小體積。
  • 對一些在線視頻播放的 BUG 修復(fù)
  • 支持安卓 API 9-22 和 iOS 5.1.1-8.3.X
  • 使用各種平臺原生的渲染方式進(jìn)行優(yōu)化

IJKPlayer 由Bilibili開發(fā)并開源谦秧,這里是github的地址

接下來說下為什么要學(xué)習(xí)IJKPlayer

<p>

近幾年比較熱門的有直播竟纳,VR之類的,特別是移動(dòng)端直播發(fā)展的十分火熱疚鲤,所以對于一個(gè)移動(dòng)端的開發(fā)者來說掌握幾款開源播放器是很有必要的锥累,這樣我們可以根據(jù)自己的需求來對播放器進(jìn)行定制等等,所以廢話就不多說了集歇,

IJKPlayer的編譯

<p>

如果緊緊是使用而已的話桶略,其實(shí)可以選擇不對IJKPlayer進(jìn)行編譯,直接添加官方依賴:

    # required, enough for most devices.
    compile 'tv.danmaku.ijk.media:ijkplayer-java:0.6.3'
    compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.6.3'

    # Other ABIs: optional
    compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.6.3'
    compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.6.3'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.6.3'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.6.3'

    # ExoPlayer as IMediaPlayer: optional, experimental
    compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.6.3'

然后使用就可以了,當(dāng)然我們這里選擇對IJKPlayer际歼,這樣可以對整個(gè)流程進(jìn)行了解惶翻,因?yàn)榭赡芤院髸?huì)對IJKPlayer進(jìn)行定制

首先我們得確定是否配置了NDK與SDK環(huán)境

<p>

NDK和SDK的下載就不貼上來,確定本機(jī)有這兩者之后

配置環(huán)境變量

open -e .bash_profile

在文件后加入

export ANDROID_DIR=/Users/admin/Documents
export ANDROID_SDK=$ANDROID_DIR/sdk  
export ANDROID_NDK=$ANDROID_DIR/android-ndk-r12b  
export PATH=$PATH:$ANDROID_NDK:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools  

保存并關(guān)閉更新剛配置的環(huán)境變量

source .bash_profile

接下來驗(yàn)證是否配置成功
輸入

ndk-build
adb
echo ANDROID_NDK
echo ANDROID_SDK

只要這些都有反應(yīng)鹅心,說明配置已經(jīng)成功了

接下來就可以對IJKPlayer進(jìn)行編譯了

<p>

首先需要下載IJKPlayer源碼了

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

接下來進(jìn)行編譯

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

編譯好后吕粗,我們可以找到ijkplayer文件夾

圖1 ijkplayer文件

這個(gè)是可以直接導(dǎo)入AS的,導(dǎo)入后運(yùn)行即可

圖2 運(yùn)行截圖

選擇視頻就可以播放了

IJKPlayer的精簡優(yōu)化

<p>

進(jìn)行到這里旭愧,我們會(huì)發(fā)現(xiàn)上面的ijkplayer里面的東西太多了颅筋,很多我們是用不到的,所以榕茧,我們把不需要的東西剔除掉垃沦,留下我們需要的東西,暫時(shí)精簡一下

首先新建一個(gè)Android工程

接下來把ijkplayer-armv7a/src/main/libs下的文件拷貝到新的工程的libs下用押。

圖3 libs

然后把ijkplayer-java/build/outputs/aar/ijkplayer-java-release.aar復(fù)制到新工程的libs下

圖4 aar

再后面就是把ijkplayer-example/src/main/java/tv中的部門代碼拷過來

圖5 代碼

最后就是修改build.gradle肢簿,把so和aar文件依賴添加上去

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "com.example.ijkplayerdemo"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile(name: 'ijkplayer-java-release', ext: 'aar')
}

到這里ijkplayer的精簡工作就完成了

接下來我們來寫個(gè)簡單的例子驗(yàn)證下

videoView.setAspectRatio(IRenderView.AR_ASPECT_FIT_PARENT);
videoView.setVideoURI(Uri.parse("http://zv.3gv.ifeng.com/live/zhongwen800k.m3u8"));
videoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(IMediaPlayer mp) {
            videoView.start();
        }
    });

運(yùn)行如下

圖6 運(yùn)行截圖

到這里IJKPlayer的編譯和簡單使用就基本結(jié)束了池充,后面會(huì)對IJKPlayer會(huì)有更加深入的介紹與認(rèn)識收夸,peace~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卧惜,一起剝皮案震驚了整個(gè)濱河市咽瓷,隨后出現(xiàn)的幾起案子茅姜,更是在濱河造成了極大的恐慌钻洒,老刑警劉巖锄开,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件院刁,死亡現(xiàn)場離奇詭異退腥,居然都是意外死亡狡刘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艺蝴,“玉大人猜敢,你說我怎么就攤上這事缩擂√硭拢” “怎么了博脑?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵叉趣,是天一觀的道長君账。 經(jīng)常有香客問我乡数,道長净赴,這世上最難降的妖魔是什么罩润? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任金度,我火速辦了婚禮猜极,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丢胚。我一直安慰自己携龟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匿又,像睡著了一般。 火紅的嫁衣襯著肌膚如雪建蹄。 梳的紋絲不亂的頭發(fā)上碌更,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音洞慎,去河邊找鬼痛单。 笑死,一個(gè)胖子當(dāng)著我的面吹牛劲腿,可吹牛的內(nèi)容都是我干的旭绒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼焦人,長吁一口氣:“原來是場噩夢啊……” “哼挥吵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起花椭,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤忽匈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后矿辽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丹允,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郭厌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雕蔽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片折柠。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖萎羔,靈堂內(nèi)的尸體忽然破棺而出液走,到底是詐尸還是另有隱情碳默,我是刑警寧澤贾陷,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站嘱根,受9級特大地震影響髓废,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜该抒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一慌洪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凑保,春花似錦冈爹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芝此,卻和暖如春憋肖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背婚苹。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工岸更, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膊升。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓怎炊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親廓译。 傳聞我的和親對象是個(gè)殘疾皇子评肆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,262評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)责循,斷路器糟港,智...
    卡卡羅2017閱讀 134,693評論 18 139
  • 最近在做音頻相關(guān)的項(xiàng)目,起初院仿,音樂播放器使用的是Android系統(tǒng)本身的MediaPlayer秸抚,在開發(fā)中使用的本來...
    對月的獨(dú)白閱讀 10,516評論 16 28
  • 前端時(shí)間項(xiàng)目中用到了視頻播放的功能速和,沒辦法又不想使用系統(tǒng)自帶的播放器,沒有為什么就是不想用剥汤,我也希望谷歌爸爸能出一...
    Ggx的代碼之旅閱讀 7,030評論 25 7
  • P91-187 如何介紹一本書颠放? 第一,F(xiàn)AB法吭敢。 f是屬性或者是功效碰凶。 a是優(yōu)勢,優(yōu)點(diǎn)鹿驼。 b是客戶利益與價(jià)值欲低。 ...
    曼思閱讀 219評論 2 0