ijkplayer接入方式说明

1、ijkplayer简介

ijkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器。FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤器和播放大部分的视频格式。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

2、ijkplayer导入方式

ijkplayer的导入方式有两种,第一种是使用gradle导入ijkplayer发布到jcenter已经打包好的依赖包;第二种是去github中下载ijkplayer源码,自己进行编译。

第一种gradle方式导入:

allprojects {

repositories {

jcenter()

}

}

dependencies {

# required, enough for most devices.

compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'

compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'
# Other ABIs: optional

compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'

compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'

compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'

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

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

}

第二种从github下载ijkplayer源码,进行编译:

可以使用Android Studio新创建一个Android项目,如项目为DydmPlayer,项目路径为:”C:\Users\apple\AndroidStudioProjects\DydmPlayer”。我们可以使用Android Studio打开项目,然后在Terminal下按如下步骤执行命令进行编译。

1)从github中拉取代码,并且cd到代码的目录下

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

cd ijkplayer-android

2)选择k0.8.8分支

git checkout -B latest k0.8.8

3)执行ijkplayer项目中的init-android.sh进行初始化,包括了把ffmpeg的代码拉取到本地等操作

./init-android.sh

4)进入android/contrib目录下,clean,然后编译一下ffmpeg软解码库

cd android/contrib

./compile-ffmpeg.sh clean

./compile-ffmpeg.sh all

5)cd到上一级目录,也就是android目录下,运行compile-ijk.sh进行编译

cd ..

./compile-ijk.sh all

运行完成之后,会得到ijkplayer所需的so文件,目录路径为”C:\Users\apple\AndroidStudioProjects\DydmPlayer\ijkplayer-android\android\ijkplayer”,具体如图所示:

so库

 

在各个cpu架构下,都会有相应的so文件,比如armv7a的so文件,就在ijkplayer-armv7a/src/main/libs/armeabi-v7a目录下。

编译完了so文件,我们看到上图中还有一个ijkplayer-java的文件,这个就是ijk中,jni调用so文件的包,我们可以编译这个包,也可以直接使用gradle方式,直接引入相应版本的ijkplayer-java包。

编译ijkplayer的方式很简单,进入到ijkplayer-java工程下,运行代码:

cd ijkplayer/ijkplayer-java

./gradlew clean build

然后把build/out中的aar,放到自己工程并依赖就可以了

gradle依赖java包,与上面的gradle依赖一样,在自己工程下添加如下代码:

由于我下载编译的是k0.8.8,所以我依赖的java包也是0.8.8,避免出现版本不兼容的问题

compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'

最后把自己编译的好so文件,放到工程的jniLib下面就好了。

发表回复

后才能评论