Android主流播放器比較

本篇文章主要介紹 Android 原生 VideoView,Google 開源視頻播放框架 ExoPlayer,Vitamio 視頻播放框架以及 Bilibili 開源視頻播放框架 ijkplayer 的使用方法和優缺點。android

VideoView

前段時間使用MediaPlayer+SurfaceView封裝了一個視頻播放器,因爲VideoView就是採用這種方案封裝,因此再也不累贅。bash

VideoView 的使用很是簡單,播放視頻的步驟:微信

  • 在界面佈局文件中定義 VideoView 組件,或在程序中建立 VideoView 組件網絡

  • 調用 VideoView 的以下兩個方法來加載指定的視頻:app

    setVidePath(String path):加載 path 文件表明的視頻
    
     setVideoURI(Uri uri):加載 uri 所對應的視頻
    複製代碼
  • 調用 VideoView 的 start()、stop()、psuse() 方法來控制視頻的播放框架

不足:

  • 原生VideoView只能播放mp4和3gp兩種格式;
  • seekTo定位不許,只能定位到關鍵幀;
  • VideoView不保存視頻播放狀態,需自行處理;
  • VideoView加載網絡視頻時,常見黑屏狀況,由於VideoView每次都會從新加載。

ExoPlayer

ExoPlayer 開源項目包含了 library 和 示例:ide

  • ExoPlayer library - 這部分是核心的庫
  • Demo app - 這部分是演示怎麼使用 ExoPlayer 的 Demo

ExoPlayer 庫的核心類是 ExoPlayer 類。該類維護了播放器的全局狀態 。好比如何獲取媒體數據,如何緩衝以及是怎樣的編碼格式。佈局

ExoPlayer 基於 MediaCodec 和 AudioTrack 提供了默認的音視頻的 TrackRenderer 實現。全部的 renderers 都須要 SampleSource 對象,ExoPlayer 從 SampleSource 得到 media samples 用於播放。ui

優勢:

ExoPlayer 相較於 MediaPlayer 有不少不少的優勢:this

  • 支持動態的自適應流 HTTP (DASH) 和 平滑流,任何目前 MediaPlayer 支持的視頻格式(同時它還支持 HTTP 直播(HLS),MP4,MP3,WebM,M4A,MPEG-TS 和 AAC)。
  • 支持高級的 HLS 特性,例如正確處理 EXT-X-DISCONTINUITY 標籤;
  • 支持自定義和擴展,ExoPlayer 專門爲此設計;
  • 便於隨着 App 的升級而升級。由於 ExoPlayer 是一個包含在你的應用中的庫,對於你使用哪一個版本有徹底的控制權,而且你能夠簡單的跟隨應用的升級而升級;
  • 更少的適配性問題。

缺點:

  • ExoPlayer 的音頻和視頻組件依賴 Android 的 MediaCodec 接口,該接口發佈於 Android4.1(API 等級 16)。所以它不能工做於以前的Android 版本。

Vitamio

簡單使用:

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

優勢:

ijkplayer 最大的優勢就是能夠根據須要編譯須要的解碼器。在編譯的時候經過 ln -s module-default.sh module.sh 選擇要編譯的解碼器。ijkplayer 在 config 目錄下提供了三種 module.sh 。也可本身修改 module.sh 。

缺點:

ijkplayer 的缺點是庫太大。加入項目後會大大增長你的 APP 的大小。

更多內容,關注個人微信公衆號——Android機動車

相關文章
相關標籤/搜索