ijkplayer默認編譯好的so比較侷限,比如不支持https、不支持rmvb等。要想兼容只能自己進行編譯。
編譯步驟:
一、準備Linux環境
需要在Linux中編譯,例如我的Linux版本爲Ubuntu 16.04。
二、安裝Git和yasm
sudo apt-get install git
sudo apt-get install yasm
注意,需要連接網絡,如果服務器沒法訪問網絡,可以通過手機網絡共享給服務器,進行安裝。
三、下載和配置SDK與NDK
1、下載SDK和NDK壓縮包,並放到服務器某個目錄下。
官網就可以下載,例如我下載的是android-sdk_r24.4.1-linux.tgz和android-ndk-r13b-linux-x86_64.zip。
2、解壓壓縮包。要先cd到壓縮包存放的目錄下,再執行下面目錄解壓。
sudo tar -zxvf android-sdk_r24.4.1-linux.tgz
sudo unzip android-ndk_r13b-linux-x86_64.zip
3、配置SDK和NDK環境變量。
a、打開 /etc/profile 文件,用vim即可:
sudo vim /etc/profile
b、vim進入insert模式在文件末尾添加以下環境變量:
export ANDROID_NDK=/home/xxx/work/ldw/tools/android-ndk-r13b
export PATH=$PATH:$ANDROID_NDK
export ANDROID_SDK=/home/xxx/work/ldw/tools/android-sdk-linux
export PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
添加完保存退出vim(:wq)
c、重啓服務器或者source /etc/profile 使文件修改生效。
四、拉取ijkplayer源碼
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
五、配置編譯腳本
cd到ijkplayer-android\config目錄下,然後
rm module.sh
ln -s module-default.sh module.sh
source module.sh
裏面默認提供了三種編譯腳本,需要支持更多格式則直接拷貝使用module-default.sh。
六、初始化openssl,支持https用
cd到ijkplayer-android目錄,然後
./init-android-openssl.sh
七、清除
cd到android/contrib目錄,然後
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
八、編譯openssl
./compile-openssl.sh all
九、編譯ffmpeg
./compile-ffmpeg.sh all
十、編譯ijkplayer
./compile-ijk.sh all
十一、生成Android和iOS工程
編譯後生成一個demo工程,Android工程位置在ijkplayer-android\android\ijkplayer,裏面包含各個架構的so,其中ijkplayer-java是java文件。
建議可以建立一個ijkplayer的module,把ijkplayer-java代碼和各個平臺so拷進去,需要使用ijkplayer則直接依賴ijkplayer該module即可。