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”,具体如图所示:
在各个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下面就好了。