ijkplayer系列(一) —— android平台下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目录下的这些文件导入进来:

ijkplayer系列(一) —— android平台下ijkplayer的使用_第1张图片

也是要导入我们工程里面的。

最后
我们在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。**

你可能感兴趣的:(ijkplayer系列(一) —— android平台下ijkplayer的使用)