文章二 ijkpalyer ffmpeg 编译 (Ubuntu)(二)
编译准备:
1. android ndk(建议使用 r10e 版本) 下载地址
2. android sdk
编译过程:
1. cygwin编译 ijkplayer 需要安装make,yasm,git,gcc 四个插件 Cygwin安装步骤
2. 配置Cygwin NDK 和 SDK 环境
在.bash_profile文件末尾加上自己的NDK和SDK路径
#ANDROID SDK所在目录
export ANDROID_SDK=/home/android_sdk
#ANDROID NDK所在目录
export ANDROID_NDK=/home/android_sdk/android-ndk-r10e
注意:我的sdk和ndk的放置路径如下图:
3. 编译开始,打开Cydwin控制台
依次输入:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
我在使用Cygwin编译的时候,由于乱链接在Cygwin中没有效,所以下载完git上的代码后需要做如下修改:
1. 进入D:\cygwin64\home\user\ijkplayer-android\android文件夹,打开compile-ijk.sh,注释掉如下编码:
2. 进入D:\cygwin64\home\user\ijkplayer-android\android\ijkplayer\ijkplayer-xxx\src\main\jni
先删除ijkmedia链接文件和android-ndk-prof(存在就删除,不存在就不要),然后打开Android.mk,在末尾添加如下:
include /home/user/ijkplayer-android/ijkmedia/*.mk
include /home/user/ijkplayer-android/ijkprof/android-ndk-profiler-dummy/jni/*.mk
继续编译:
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
如果过你想改变默认编译(ijkplayer提供三种编译方式):
module-default.sh module-lite.sh module-lite-hevc.sh
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
cd android/contrib
# cd ios
sh compile-ffmpeg.sh clean
这些方式都不适合的话,可自己配置module.sh文件,这里修改module-lite-hevc.sh 为模板:
增加RTSP媒体流的播放,在module-lite-hevc.sh中做如下修改:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=tcp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=sdp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtp"
如果编译0.8.8遇到问题:linux/perf_event.h: No such file or directory ,添加下面的配置到
module-lite-hevc.sh模板文件中:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
增加HTTPS媒体流的播放:首先cd到 ijkplayer/android/contrib 目录下
编译 openssl
./compile-openssl.sh clean
./compile-openssl.sh all
然后编译ffmpeg:
编译 ffmpeg
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all