Mac上ijkplayer源码编译

使用说明

首先,我们知道引入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) 重新执行上面init的方法

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文件了,

放到项目中结合下面的依赖就可以使用了

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

你可能感兴趣的:(Mac上ijkplayer源码编译)