前言
系統:UBUNTU 16.04桌面版
編譯步驟,主要還是參考README.md中Build Android的描述
Android/iOS video player based on FFmpeg n3.2, with MediaCodec, VideoToolbox support.
優勢:
基於 FFmpeg,表明幾乎支持任何的協議
基於MediaCodec, VideoToolbox,表明支持硬件解碼
1.下載軟件
2.軟件安裝
2.1.安裝OPENJDK
sudo apt-get install openjdk-8-jre-headless
2.2.SDK安裝
SDK
解壓下載好的SDK壓縮包,執行tools/android腳本啓動android sdk manager下載最新的Android SDK Tools和Android SDK Platform-tools和Android SDK Build-tools
2.3.配置環境
打開文件/etc/profile,在文件末尾加入以下內容:
export ANDROID_SDK=/home/sugao/Android/Sdk
export ANDROID_NDK=/home/sugao/Android/Ndk-r14b
export PATH=${ANDROID_SDK}/platform-tools:$PATH
export PATH=${ANDROID_SDK}/tools:$PATH
export PATH=${ANDROID_NDK}:$PATH
2.5.環境生效
source /etc/profile
2.6.環境檢測
adb -version
2.7.安裝其他軟件
sudo apt-get update
sudo apt-get install git
sudo apt-get install yasm
3.下載ijkplayer
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
4.編譯
./init-android.sh
4.1.編譯openssl
cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all
4.2.編譯ffmpeg
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
注意:FFMPEG的配置文件在config/module.sh
4.3.編譯ijkplayer native代碼
cd ..
./compile-ijk.sh all
4.4.庫文件
在android/ijkplayer/ijkplayer-xxxx/src/main/libs/armeabi-v7a目錄中有對應的庫文件(libijkffmpeg.so,libijkplayer.so,libijksdl.so)。
全平臺庫文件下載鏈接
5.運行DEMO
1.導入DEMO
點擊ANDROID-STUDIO中的File->New->Improt Project導入android/ijkplayer
根據ANDROID-STUDIO的版本,修改build.gradle中ext配置
ext {
compileSdkVersion = 23 // depending on your sdk version
buildToolsVersion = "23.0.0" // depending on your build tools version
targetSdkVersion = 23 // depending on your sdk version
}
2.運行DEMO
DEMO程序APK下載鏈接
6.整體評測
6.1.DEMO評測
- DEMO首頁界面:已包含本地文件瀏覽和播放,sample列表和播放以及設置界面,功能已相當豐富;
- DEMO播放界面:包括Player(使用的播放器:AndroidMediaPlayer,IjkMediaPlayer),Render(圖像渲染:none,SurfaceView,TextureView),Scale(比例:16:9,4:3,aspect),Info(流信息)和Tracks(音視頻軌道,且可選擇播放那些軌道) ,並且具有
- DEMO普通設置:是否使能後臺播放,設置播放引擎(AndroidMediaPlayer,IjkMediaPlayer,IjkExoMediaPlayer)
- DEMO視頻設置:是否使用MediaCodec編解碼,是否使用MediaCodec的自動旋轉,是否使用MediaCodec處理分辨率變化,像素格式
- DEMO音頻設置:是否使用OpenSL ES接口
- DEMO渲染設置:略
- DEMO麥克風設置:是否使用MediaDataSource接口;
6.2.性能評測
標清播放問題不大,但高清可能出現音視頻不同步;
TS流播放加載時間太長,切臺效果不佳;
7.錯誤整理
7.1.ADV啓動錯誤
錯誤信息:
下午3:08 Executing tasks: [:ijkplayer-example:assembleAll32Debug]
下午3:08 Emulator: libGL error: unable to load driver: nouveau_dri.so
下午3:08 Emulator: libGL error: driver pointer missing
下午3:08 Emulator: libGL error: failed to load driver: nouveau
下午3:08 Emulator: libGL error: unable to load driver: swrast_dri.so
下午3:08 Emulator: libGL error: failed to load driver: swrast
下午3:08 Emulator: X Error of failed request: BadValue (integer parameter out of range for operation)
下午3:08 Emulator: Major opcode of failed request: 155 (GLX)
下午3:08 Emulator: Minor opcode of failed request: 24 (X_GLXCreateNewContext)
下午3:08 Emulator: Value in failed request: 0x0
下午3:08 Emulator: Serial number of failed request: 33
下午3:08 Emulator: Current serial number in output stream: 34
下午3:08 Emulator: Process finished with exit code 1
解決辦法:
使用sudo apt list "*nvidia-[0-9][0-9][0-9]"獲取NVIDIA顯卡驅動版本,然後安裝相應驅動(sudo apt install nvidia-375),重啓電腦即可