一橄维、編譯緣由:
公司業(yè)務(wù)需要集成播放器,市面上用的比較多的是B端的ijkplayer播放器拴曲,使用方便争舞,功能也比較強大,所在就采用了ijkplayer澈灼。項目的要求支持的mp4,3gp,rmvp,rm,avi,mov,mpg,flv封裝格式和https協(xié)議竞川,而且ijkplayer默認的編譯的格式比較少店溢,所以要重新編譯,不過在編譯的過程出現(xiàn)了各種問題委乌,各種坑床牧,所以記錄一下,省得后人來踩遭贸。
二戈咳、編譯歷程
編譯ijkplayer播放器要在linux環(huán)境下生成so,小編之前都是在windows上進行開發(fā),沒有在linux上開發(fā)過壕吹,對linux指令不是很熟悉著蛙,所以就想在簡單的在windows配置環(huán)境,采用了Cygwin耳贬,后來我發(fā)現(xiàn)在我錯了踏堡,裝了Cygwin后,出錯了這么多軟件和環(huán)境的問題咒劲。后來放棄了顷蟆,采用虛擬機,VMware+Ubuntu,其實這個方式更簡單缎患,只需要在官網(wǎng)下載安裝即可慕的,安裝的時候給ubuntu的空間可以大一點,我的是60G挤渔,小的話可能會提示空間不足肮街。于是就興高采烈在開始編譯了。按照著https://github.com/Bilibili/ijkplayer官網(wǎng)上的步驟來判导,臥槽嫉父,不行啊。后來通過不斷的嘗試和查找眼刃,終于編譯成功了绕辖,下面的我嘗試的正確步驟。
1擂红、配置環(huán)境
install homebrew, git, yasm
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
去官網(wǎng)下載解壓jdk,sdk,ndk,ndk版本用的是r10e的
$sudo gedit ~/.bashrc
將一下內(nèi)容粘貼到文檔最底部(具體路徑以自己的機器為準(zhǔn))
export JAVA_HOME=/home/tan/Android/jdk1.7.0_79
export JRE_HOME=/home/tan/android/jdk1.7.0_79/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export ANDROID_SDK=/home/tan/android/android-sdk-linux
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
export ANDROID_NDK=/home/tan/android/android-ndk-r13b
export ANDROID_NDK
保存仪际,輸入命令:source ~/.bashrc 使環(huán)境生效
2、編譯之前
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
配置編譯支持所有格式
cd config
先打開module-default.sh昵骤,在尾部添加下面代碼树碱,要不然會編譯失敗,這里是一個大坑
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bzlib"
rm module.sh
ln -s module-default.sh module.sh
cd android/contrib
sh compile-ffmpeg.sh clean
ok,真正要開始編譯了
回到項目根目錄
cd ijkplayer-android
./init-android-openssl.sh //這里是配置ssl变秦,https協(xié)議
./init-android.sh
這里下載ffmpeg和預(yù)編譯內(nèi)容成榜,比較耗時,可以喝一杯咖啡先蹦玫,
完成后接著
cd android/contrib
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all
這里的編譯也比較耗時赎婚,不過等待的就是成功的喜悅啦
結(jié)束后刘绣,編譯就完成了,接下來就是生成so文件
cd ..
./compile-ijk.sh all
生成過程還不太久挣输,會在/ijkplayer-android/android/ijkplayer目錄下生成我們所想要的包纬凤,生成的包還挺大的。每一個步驟都是比較重要的歧焦,落掉某個步驟可能就會導(dǎo)入生成失敗移斩,每次的編譯生成過程也是比較耗時的,所以少踩點坑就可以節(jié)約很多時間绢馍。