[IJKPLAYER]編譯與DEMO運行

前言

系統:UBUNTU 16.04桌面版
編譯步驟,主要還是參考README.md中Build Android的描述

Android/iOS video player based on FFmpeg n3.2, with MediaCodec, VideoToolbox support.
優勢:
基於 FFmpeg,表明幾乎支持任何的協議
基於MediaCodec, VideoToolbox,表明支持硬件解碼

IJKPLAYER 項目地址

1.下載軟件

android NDK

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下載鏈接
主頁圖片
SAMPLE

設置1
設置2
播放界面

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),重啓電腦即可

發佈了86 篇原創文章 · 獲贊 30 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章