寫在前面
ijkplayer是bilibili的一個開源的視頻播放器枫浙,本篇文章主要講解如何用ijkplayer播放CCTV1语泽。ijkplayer也支持本地視頻徐勃,方法都大同小異窒百,要是大家有這方面需求的話僻焚,可以去官網(wǎng)上看看用法。
ijkplayer用法
編譯前準備
首先我們得從github上把源代碼clone下面衅疙,當然由于我們要編譯源代碼莲趣,所以得在linux下面進行,要是讀者沒有什么特別需求的話饱溢,可以直接在網(wǎng)上找一些編譯好的so喧伞,import到project里面也行。
網(wǎng)上有很多關(guān)于怎樣編譯源碼的文章绩郎,我這里就簡單寫一下吧:
首先我們在ubuntu下面得有NDK和SDK環(huán)境潘鲫,我們可以在AndroidDevTool這里下載。
然后添加環(huán)境變量,這里我把NDK和SDK全部放到/home/ijkplayer下的肋杖,所以環(huán)境變量:
export ANDROID_SDK=~/home/ijkplayer/sdk
export ANDROID_NDK=~/home/ijkplayer/android-ndk-r10e
export PATH=$PATH:$ANDROID_SDK:$ANDROID_NDK:$ANDROID_SDK/platform-tools/
編譯源碼
git clone https://github.com/bbcallen/ijkplayer.git
cd ijkplayer-android
git checkout -B latest k0.5.1
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
上面是從github上面直接復(fù)制來的溉仑,到這里,編譯好了状植,我們就可以直接復(fù)制到項目里面用了浊竟。上面編譯之所以加上all是因為我們不止編譯某一個平臺下的so,當然如果你要編譯某一個平臺的so(如arm64)津畸,那么把
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
換成
./compile-ffmpeg.sh arm64
cd ..
./compile-ijk.sh arm64
就行了振定。
使用
如果你沒有什么特殊需求的話,也可以直接添加官方依賴:
compile 'tv.danmaku.ijk.media:ijkplayer-java:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.5.1'
或者你也可以更改部分源碼肉拓,然后再像上面說的那樣編譯后频,最后把各個平臺的so加入進來。
不過不管你如何更改暖途,這幾個必須是得導(dǎo)入的:
compile 'tv.danmaku.ijk.media:ijkplayer-java:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.5.1'
下面這幾個是不同平臺的鏈接庫卑惜,根據(jù)需要可以適當刪除:
compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.5.1'
compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.5.1'
下面這個是一個MediaPlayer,因為我們后面可以在settings下設(shè)置用不同player來渲染多媒體顯示。這就是其中一個吧驻售。
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.5.1'
然后官方demo目錄下的這些文件導(dǎo)入進來:
也是要導(dǎo)入我們工程里面的露久。
最后
我們在activity里面幾句代碼就可以簡單集成CCTV1
了:
mSettings = new Settings(this);
videoView = (IjkVideoView) findViewById(R.id.videoview);
// init player
IjkMediaPlayer.loadLibrariesOnce(null);
IjkMediaPlayer.native_profileBegin("libijkplayer.so");
videoView.setVideoURI(Uri.parse("http://106.36.45.36/live.aishang.ctlcdn.com/00000110240001_1/encoder/1/playlist.m3u8"));
videoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer mp) {
videoView.start();
}
});
是不是很簡單?
由于本文主要是方便后面的源碼分析芋浮,所以使用方法寫得很簡單抱环,其實我們可以配合我們剛剛復(fù)制進來的AndroidMediaController
來加入控制條什么的蜡塌。要是大家需要詳細點的教程的話协饲,可以給我留言者祖。
** 如果大家還想了解ijkplayer的工作流程的話,可以關(guān)注下android下的ijkplayer瘤旨。**