ijkplayer系列(一) —— android平臺下ijkplayer的使用 寫在前面 ijkplayer用法

寫在前面

ijkplayer是bilibili的一個開源的視頻播放器,本篇文章主要講解如何用ijkplayer播放CCTV1。ijkplayer也支持本地視頻,方法都大同小異,要是大家有這方面需求的話,可以去官網上看看用法。

ijkplayer用法

編譯前準備

首先我們得從github上把源代碼clone下面,當然由於我們要編譯源代碼,所以得在linux下面進行,要是讀者沒有什麼特別需求的話,可以直接在網上找一些編譯好的so,import到project裏面也行。

網上有很多關於怎樣編譯源碼的文章,我這裏就簡單寫一下吧:

首先我們在ubuntu下面得有NDK和SDK環境,我們可以在AndroidDevTool這裏下載。

然後添加環境變量,這裏我把NDK和SDK全部放到/home/ijkplayer下的,所以環境變量:

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上面直接複製來的,到這裏,編譯好了,我們就可以直接複製到項目裏面用了。上面編譯之所以加上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加入進來。

不過不管你如何更改,這幾個必須是得導入的:

    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'

下面這個是一個MediaPlayer,因爲我們後面可以在settings下設置用不同player來渲染多媒體顯示。這就是其中一個吧。

    compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.5.1'

然後官方demo目錄下的這些文件導入進來:

也是要導入我們工程裏面的。

最後
我們在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();
            }
        });

是不是很簡單?

由於本文主要是方便後面的源碼分析,所以使用方法寫得很簡單,其實我們可以配合我們剛剛複製進來的AndroidMediaController來加入控制條什麼的。要是大家需要詳細點的教程的話,可以給我留言。

** 如果大家還想了解ijkplayer的工作流程的話,可以關注下android下的ijkplayer。**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章