BIliBIli開源播放器github地址:
這個播放器是沒有編譯過的,沒有so文件,只是個播放器殼,播放支持的格式內容取決於你下載他的ffmpeg編譯時設定的配置。個人覺得播放器ijkplayer和內核ffmpeg分開放有助於解耦,方便播放器升級時候,不用重新下載ffmpeg。
ijkplayer 最新版本:k0.8.8
ffmpeg 基於內核:3.4
編譯環境需要下載 git 和yasm
1,linux環境,安裝好NDK,設置好環境代碼,最好把它寫到當前用戶的.bashrc下。
export
JAVA_HOME=/home/lee/Desktop/jre1.8.0_191/bin
export
JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
//NDK
export
ANDROID_NDK=/home/leesoo/Desktop/android-ndk-r10e
export PATH=$ANDROID_NDK:$PATH
2,初始化android (比較久,下載半個小時)
./init-android
.sh
看腳本就是git https://github.com/Bilibili/FFmpeg.git 到extra/ffmpeg 文件夾里面
再復制 到android/contrib/ffmpeg-$1 各個平台
最后./init-config.sh
./init-android-libyuv.sh
./init-android-soundtouch.sh // 聲音處理,可不要?視頻倍速播放時候,聲音變調用
3,編譯腳本配置
就是自動化編譯時的一些配置選項,比如支持什么協議啊,支持什么音視頻類型等,
這個配置文件是:config/module.sh,你喜歡可以打開看看這個文件:
比如這里是配置處理什么類型的數據的,enable啟用,disable禁用。
另外官方給我們提供了三個模板給我們使用:
module-default.sh:默認,如果你喜歡更多類型可以用這個;
module-lite-hevc.sh:如果您更喜歡較小的二進制大小的編解碼器/格式(包括hevc功能)
module-lite.sh:如果您更喜歡較小的二進制大小的編解碼器/格式(默認情況下)!
反正體積最小,就用module-lite.sh這個就行了,使用也很簡單:
rm module.sh
ln -s module-lite.sh module.sh //建立軟鏈接到module-lite.sh,先刪掉原來的,不然提示已存在
source module.sh

4,編譯ijk用的FFmpeg (編譯一個平台大概5-10分鍾,不寫平台默認是ARMV7A)
執行 . /compile-ffmpeg.sh
會生成對應平台的ffmpeg庫文件。 用來做預編譯Prebuilt。
/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/ 目錄
生成
libijkffmpeg.so (15-20MB大)

5,編譯ijkpalyer,生成libijkffmpeg.so libijkplayer.so libijksdl.so 3個庫文件。
執行
./compile-ijk.sh
因為編譯
FFmpeg 只有一個平台,所以compile-ijk.sh 不寫平台參數也默認編譯armv7a的庫文件,生成so路徑為。把它拷貝到安卓項目下對應的libs目錄即可使用。
