上手一次完整的Ijkplayer源码编译(mac环境)

使用说明

首先,我们知道引入ijkplayer到项目的方式有两种

  • 第一种 gradle引用
# required
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'
}

通过这种方式引入只能提供基本的编码格式以及功能,并且不支持https协议。如果需要更多功能和编码格式支持,则需要通过编译源码实现

  • 第二种 编译源码
    下面就介绍如何编译源码

编译源码

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的代码拉取到本地等操作(时间有点长),下载过程中extra\ffmpeg文件夹的内容会变化

./init-android.sh

由于是从github上拉取ffmpeg代码,网速不好的情况下,时间会很长,可能会遇到下面的错误提示

remote: Enumerating objects: 539029, done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

错误原因:由于Http协议错误,当Pull或者Clone的时候
因为curl的postBuffer默认值太小的原因,而项目可能本身比较大,所以下载失败。可以尝试用下面的方法解决:
解决方案: 在Git Bash Here 中执行:

  • 1、Git config –global http.postBuffer 524288000
    解析:相当于把curl的postBuffer的值修改的大一些。524288000的单位是B,相当于500MB。
  • 2、git config –list
    解析:查看配置,看看新配置是否生效。
  • 3、然后继续执行git pull等命令即可。
    如果还是不行可以继续加大postBuffer的数值尝试,或者换网速好点的地方。
    当然,还有一种方法可以做到很快,就是将github上的代码导入到码云上面,然后修改init-android.sh脚本里的路径,具体可以参考这里,下载的速度基本在几M~十几M。这里建议最好自己按步骤导入码云,不要使用前人的,前人的代码比较老,编译的时候会出现不可预知的问题。

4.如果视频播放需要支持Https协议,还需要执行如下命令

./init-android-openssl.sh

5.进入android/contrib目录下,clean,然后编译一下ffmpeg软解码库,各个平台的openssl

cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all

在执行complie-opensl.sh all的时候可能会遇到下面的问题

ERROR: Failed to create toolchain.

解决办法:替换NDK版本为r14d就可以了。这里需要注意的是脚本里代码限制NDK版本是 11-14,最好选用这个范围的版本。不然会报:You need the NDKr10e or later

6.如果需要更多的编解码格式,需要先执行下面的命令

cd ../..
cd config
rm module.sh
ln -s module-lite.sh module.sh
cd ..
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

7.使用如下的命令编译ijkplayer即可

cd ..
./compile-ijk.sh all

编译结束之后,你就可以按照下面的路径找到你要的.so文件了,

上手一次完整的Ijkplayer源码编译(mac环境)_第1张图片
放到项目中结合下面的依赖就可以使用了

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

感谢

https://blog.csdn.net/xiangzhihong8/article/details/80169571

https://www.jianshu.com/p/a57bbdd78798

你可能感兴趣的:(Android技术)