win10/ubuntu編譯ijkplayer實(shí)戰(zhàn)步驟

最近想要寫(xiě)一個(gè)播放器,當(dāng)初開(kāi)發(fā)視頻app的時(shí)候有接觸過(guò)ijkplayer,風(fēng)評(píng)不錯(cuò),所以想要嘗試著自己編譯一波??嘤趌inux知識(shí)匱乏,不想安裝雙系統(tǒng),也不想搗鼓虛擬機(jī),只得在windows下求突破,然而windows本身環(huán)境編譯ijkplayer又是一個(gè)巨坑……剛好,win10如今可以安裝linux子系統(tǒng),所以就嘗試一下,過(guò)程記錄如下:

ps:在網(wǎng)上還是看到很多坑,本人沒(méi)遇到過(guò),如果可以的話(huà)還是建議VM虛擬機(jī)+Ubuntu解決,遇到問(wèn)題網(wǎng)上解決方案也比較齊全

一、安裝子系統(tǒng)Ubuntu

step①:開(kāi)啟開(kāi)發(fā)人員模式

①開(kāi)啟開(kāi)發(fā)人員模式
②開(kāi)啟“適用于Linux的Windows子系統(tǒng)”功能

step②:安裝

在Microsoft Store中搜索linux,第一個(gè)ubuntu獲取安裝;安裝完成后命令行bash進(jìn)入ubuntu,首次需要設(shè)置賬戶(hù)密碼;

store中搜索安裝Ubuntu

二、環(huán)境配置:

step①:更新源

#1.備份原來(lái)的數(shù)據(jù)源配置文件

cp /etc/apt/sources.list /etc/apt/sources.list_backup

#2.編輯數(shù)據(jù)源配置文件

vi /etc/apt/sources.list

【ps:我使用的是阿里的源,如下】

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

#3.更新配置

apt-get update

step②:安裝git、yasm、python

sudo apt-get install git

sudo apt-get install yasm

sudo apt-get install python

step③:配置java、Android sdk、ndk環(huán)境

#1.下載linux版本的jdk、jre、android sdk、ndk,并解壓【PS:最好使用命令行tar解壓,ndk使用r14b版本,要不然可能會(huì)遇到各種奇奇怪怪的坑,目前ijk項(xiàng)目也不支持更高版本的ndk編譯,就算修改了腳本也不行】

#2.命令行打開(kāi)bashrc文件

vim ~/.bashrc

#3.在最后加入以下配置內(nèi)容,【】?jī)?nèi)內(nèi)容根據(jù)實(shí)際路徑更改

#======android home======#

#?。?!【】中內(nèi)容根據(jù)自己實(shí)際路徑替換?。?!#

#===sdk===#

export ANDROID_SDK=/mnt/d【/linux/sdk/android-sdk-linux】

export PATH=$ANDROID_SDK/platform-tools:$PATH

export PATH=$ANDROID_SDK/tools:$PATH

#===ndk===#

export ANDROID_NDK=/mnt/【d/linux/ndk/android_ndk_r20】

export PATH=$ANDROID_NDK:$PATH

#===java===#

export JAVA_HOME=/mnt/【d/linux/java/jdk_13_0_1】

export JRE_HOME=/mnt/【d/linux/java/jre_1_8._0_231/jre】

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

#4.刷新使配置生效

source ~/.bashrc?

#5.使用以下命令行校驗(yàn)配置是否生效,會(huì)打印一堆相關(guān)的東西就是配置成功了

ndk-build -v

android -h

java

三、編譯:

【ps:編譯是固定步驟,除了step③根據(jù)需要自行修改,如:配置ijkplayer支持的視頻格式】

step①:拉取源碼

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android

cd ijkplayer-android

git checkout -B latest k0.8.8

保存目錄位于c盤(pán)user目錄,我的路徑是:C:\Users\Administrator\ijkplayer-android\android\ijkplayer,【Users\Administrator】替換成實(shí)際的user目錄即可。

step②:運(yùn)行init-android.sh

./init-android.sh

此處會(huì)執(zhí)行pull ffmpeg等操作。ps:可能需要科學(xué)上網(wǎng),在家里100M的光纖下載速度只有1k/s,最后還fail了;最終是將電腦帶去公司,用公司的網(wǎng)絡(luò)搞定的。

step③:編譯腳本配置

選擇一:【so最小】如果希望使用較小的編解碼器/格式來(lái)獲得較小的二進(jìn)制大?。J(rèn)情況下):

cd config/

rm module.sh

ln -s module-lite.sh module.sh

source module.sh

選擇二:【so偏小】如果希望使用較小的編解碼器/格式來(lái)獲得較小的二進(jìn)制大?。ò╤evc函數(shù)):

cd config

rm module.sh

ln -s module-lite-hevc.sh module.sh

source module.sh

選擇三:【so最大】如果喜歡更多編解碼器/格式

cd config

rm module.sh

ln -s module-default.sh module.sh

source module.sh

你也可以自行打開(kāi)module.sh文件編輯,將需要的格式配置成enable

step④:初始化ijkplayer支持https

cd ..

./init-android-openssl.sh

ps:這一步最好也借助一下科學(xué)上網(wǎng),要不然也有可能fail,當(dāng)看到下面這片log的時(shí)候,就證明你成功了。

init-android-openssl成功

繼續(xù)往下,清理一下:

cd android/contrib

./compile-openssl.sh clean??

./compile-ffmpeg.sh clean

step⑤:編譯openssl

./compile-openssl.sh all

step⑥:編譯ffmpeg

./compile-ffmpeg.sh all

如果報(bào)錯(cuò):fatal error: linux/perf_event.h: No such file or directory

vim ~/ijkplayer-android/config/module.sh

在結(jié)尾加入這一行:

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

保存后執(zhí)行

./compile-ffmpeg.sh clean

./compile-ffmpeg.sh all

step⑦:編譯ijkplayer

cd ..

./compile-ijk.sh all

備份成果

cd ~

tar cvzf ijkplayer-android-build.tar.gz ijkplayer-android

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容