linux 下编译ijkplayer的so库

BIliBIli开源播放器github地址:
这个播放器是没有编译过的,没有so文件,只是个播放器壳,播放支持的格式内容取决于你下载他的ffmpeg编译时设定的配置。个人觉得播放器ijkplayer和内核ffmpeg分开放有助于解耦,方便播放器升级时候,不用重新下载ffmpeg。
 
ijkplayer 最新版本:k0.8.8
ffmpeg 基于内核:3.4
 
编译环境需要下载 git  和yasm
1,linux环境,安装好NDK,设置好环境代码,最好把它写到当前用户的.bashrc下。
 
export JAVA_HOME=/home/lee/Desktop/jre1.8.0_191/bin
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
//NDK
export ANDROID_NDK=/home/leesoo/Desktop/android-ndk-r10e
export PATH=$ANDROID_NDK:$PATH
2,初始化android (比较久,下载半个小时)
./init-android.sh
看脚本就是git https://github.com/Bilibili/FFmpeg.git   到extra/ffmpeg 文件夹里面
再复制  到android/contrib/ffmpeg-$1 各个平台
最后./init-config.sh
./init-android-libyuv.sh           
./init-android-soundtouch.sh       // 声音处理,可不要?视频倍速播放时候,声音变调用
3,编译脚本配置
就是自动化编译时的一些配置选项,比如支持什么协议啊,支持什么音视频类型等, 
这个配置文件是:config/module.sh,你喜欢可以打开看看这个文件: 
比如这里是配置处理什么类型的数据的,enable启用,disable禁用。
另外官方给我们提供了三个模板给我们使用:
module-default.sh:默认,如果你喜欢更多类型可以用这个;
module-lite-hevc.sh:如果您更喜欢较小的二进制大小的编解码器/格式(包括hevc功能)
module-lite.sh:如果您更喜欢较小的二进制大小的编解码器/格式(默认情况下)!
反正体积最小,就用module-lite.sh这个就行了,使用也很简单:
 
rm module.sh
ln -s module-lite.sh module.sh  //建立软链接到module-lite.sh,先删掉原来的,不然提示已存在
source module.sh
 
4,编译ijk用的FFmpeg  (编译一个平台大概5-10分钟,不写平台默认是ARMV7A)
执行    . /compile-ffmpeg.sh
会生成对应平台的ffmpeg库文件。 用来做预编译Prebuilt。
/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/ 目录
生成 libijkffmpeg.so (15-20MB大)
5,编译ijkpalyer,生成libijkffmpeg.so   libijkplayer.so    libijksdl.so  3个库文件。
 
执行./compile-ijk.sh 
 
因为编译FFmpeg 只有一个平台,所以compile-ijk.sh  不写平台参数也默认编译armv7a的库文件,生成so路径为。把它拷贝到安卓项目下对应的libs目录即可使用。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2019-06-16 04:13  风飘而去  阅读(1476)  评论(0编辑  收藏  举报