文章二 ijkpalyer ffmpeg 編譯 (Ubuntu)(二)
編譯準(zhǔn)備:
1. android ndk(建議使用 r10e 版本)? 下載地址
2. android sdk??
編譯過(guò)程:
1. cygwin編譯 ijkplayer 需要安裝make斤程,yasm牵辣,git,gcc 四個(gè)插件? ?Cygwin安裝步驟
2. 配置Cygwin NDK 和 SDK 環(huán)境
在.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控制臺(tái)
依次輸入:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
我在使用Cygwin編譯的時(shí)候舱权,由于亂鏈接在Cygwin中沒(méi)有效逾冬,所以下載完git上的代碼后需要做如下修改:
1. 進(jìn)入D:\cygwin64\home\user\ijkplayer-android\android文件夾包吝,打開compile-ijk.sh锥余,注釋掉如下編碼:
2. 進(jìn)入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
繼續(xù)編譯:
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
如果過(guò)你想改變默認(rèn)編譯(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遇到問(wèn)題: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