基於 VLC 的 Android 多媒體解決方案

徐州瑞步科技發表於2016-04-19

前段時間專案中需要在 Android 中播放視訊、流媒體、檢視監控,就研究了一下 Android 多媒體解決方案。

查詢了一下,大致有如下幾種:

  1. Android MediaPlayer
  2. FFmpeg
  3. Google ExoPlayer
  4. Vitamio
  5. VLC

 

Android MediaPlayer 是 Android 內建的播放器,支援格式很有限:3gp mp4,且不支援流媒體。

FFmpeg 是一套功能強大的跨平臺多媒體解決方案,需要用NDK編譯,支援海量格式、流媒體。

Google ExoPlayer 是一個Google在2014年才推出的介於現有MediaPlayer和自定義媒體播放器之間的預建播放器,要求 Android 4.1+,支援多種格式、DASH(Dynamic Adaptive Streaming over HTTP),易於擴充套件。

Vitamio 是國人開發的一個流行的第三方多媒體庫,支援 Android、iOS,最新版商業使用需要授權。

VLC是另一個功能強大的跨平臺多媒體解決方案,支援海量格式、流媒體,整合了FFmpeg的部分功能,官方支援Android平臺。

本文將使用VLC在Android中播放視訊,最終效果如下:

 

1、編譯VLC Android

VLC 官方 git 倉庫:http://git.videolan.org/

VLC Android 官方 git 倉庫:https://code.videolan.org/videolan/vlc-android

VLC Android 官方編譯說明:https://wiki.videolan.org/AndroidCompile

VLC Android比較難得的是提供了Android原生aar包,專案裡可以直接引用。按照上述說明即可編譯出對應架構(ARM、x86、MIPS等)的aar包。

我這裡編譯好了一份 ARMv7 的aar 包,可以在這裡下載。

專案原始碼已託管在Github:https://github.com/mymbrooks/VLCAndroidDemo

 

2、新建一個Android專案,把aar包複製到app/libs目錄下:

 

3、修改 app/build.gradle,新增:

 

4、建立第一個介面,支援播放本地和遠端視訊:

 

5、為了相容 Android 6.0 + ,播放本地視訊時需要先請求讀取SD卡的許可權:

 

6、使用了一個第三方的方法方便獲取Android 4.4及以上的真實視訊路徑:

 

7、建立 VLC 播放器介面,使用SurfaceView顯示視訊,支援進度條、音量控制,暫停、繼續,全屏顯示:

 

8、播放進度控制:

 

9、獲取視訊長度等資訊:

 

10、播放過程中更新時間進度:

 

11、將播放時間進度格式化為:hh:mm:ss

 

12、播放本地和遠端視訊時使用的方法不同:

 

VLC Android 提供的功能很豐富,如需要其他高階功能,請參考官方App原始碼。

此外,VLC Android 還提供了一個原生控制元件,具體用法可自行嘗試:

相關文章