本篇文章主要介紹 Android 原生 VideoView,Google 開源視頻播放框架 ExoPlayer,Vitamio 視頻播放框架以及 Bilibili 開源視頻播放框架 ijkplayer 的使用方法和優缺點。android
前段時間使用MediaPlayer+SurfaceView封裝了一個視頻播放器,因爲VideoView就是採用這種方案封裝,因此再也不累贅。bash
VideoView 的使用很是簡單,播放視頻的步驟:微信
在界面佈局文件中定義 VideoView 組件,或在程序中建立 VideoView 組件網絡
調用 VideoView 的以下兩個方法來加載指定的視頻:app
setVidePath(String path):加載 path 文件表明的視頻
setVideoURI(Uri uri):加載 uri 所對應的視頻
複製代碼
調用 VideoView 的 start()、stop()、psuse() 方法來控制視頻的播放框架
ExoPlayer 開源項目包含了 library 和 示例:ide
ExoPlayer 庫的核心類是 ExoPlayer 類。該類維護了播放器的全局狀態 。好比如何獲取媒體數據,如何緩衝以及是怎樣的編碼格式。佈局
ExoPlayer 基於 MediaCodec 和 AudioTrack 提供了默認的音視頻的 TrackRenderer 實現。全部的 renderers 都須要 SampleSource 對象,ExoPlayer 從 SampleSource 得到 media samples 用於播放。ui
ExoPlayer 相較於 MediaPlayer 有不少不少的優勢:this
1.下載 Vitamio 庫,並做爲工程依賴。
2.在 Activity 的 onCreate 方法中添加以下代碼,初始化 Vitamio 的解碼器
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
if (!LibsChecker.checkVitamioLibs(this))
return;
}
複製代碼
3.在 AndroidManifest.xml 中聲明 InitActivity
<activity android:name="io.vov.vitamio.activity.InitActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden"/>
複製代碼
4.其他步驟和使用 Android 原生的 VideoView 是同樣的。
ijkplayer 最大的優勢就是能夠根據須要編譯須要的解碼器。在編譯的時候經過 ln -s module-default.sh module.sh 選擇要編譯的解碼器。ijkplayer 在 config 目錄下提供了三種 module.sh 。也可本身修改 module.sh 。
ijkplayer 的缺點是庫太大。加入項目後會大大增長你的 APP 的大小。
更多內容,關注個人微信公衆號——Android機動車