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

前段時間項目中須要在 Android 中播放視頻、流媒體、查看監控,就研究了一下 Android 多媒體解決方案。android

查找了一下,大體有以下幾種:git

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

 

Android MediaPlayer 是 Android 內置的播放器,支持格式頗有限:3gp mp4,且不支持流媒體。github

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

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

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

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

本文將使用VLC在Android中播放視頻,最終效果以下:ui

 

一、編譯VLC Androidspa

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

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

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

VLC Android比較可貴的是提供了Android原生aar包,項目裏能夠直接引用。按照上述說明便可編譯出對應架構(ARM、x8六、MIPS等)的aar包。

我這裏編譯好了一份 ARMv7 的aar 包,能夠在這裏下載。

項目源碼已託管在Github:https://github.com/mymbrooks/VLCAndroidDemo

 

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

 

三、修改 app/build.gradle,添加:

 

四、建立第一個界面,支持播放本地和遠程視頻:

 

五、爲了兼容 Android 6.0 + ,播放本地視頻時須要先請求讀取SD卡的權限:

 

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

 

七、建立 VLC 播放器界面,使用SurfaceView顯示視頻,支持進度條、音量控制,暫停、繼續,全屏顯示:

 

八、播放進度控制:

 

九、獲取視頻長度等信息:

 

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

 

十一、將播放時間進度格式化爲:hh:mm:ss

 

十二、播放本地和遠程視頻時使用的方法不一樣:

 

VLC Android 提供的功能很豐富,如須要其餘高級功能,請參考官方App源碼。

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

相關文章
相關標籤/搜索