在android項目中使用VLC

VLC是pc時代流媒體播放器的標杆,相信大家都有接觸。VLC的流媒體部分是基於開源的live555庫。live555的代碼我稍微看過一些,基於C++的,說實話,代碼寫的有點亂,不太符合一個開源庫的檔次。不過,live555的有點是兼容性相當的好,很多不是很標準的流媒體碼流,都能適當兼容。也正因爲此,VLC作爲一款播放器,較受歡迎。


最近我在開發一個android app,需要用到流媒體播放器,主要用於播放網絡上的http流媒體和rtsp流媒體。當然,第一想法肯定是直接用android自帶的mediaplayer(用的是封裝後的videoview)。事實上,mediaplayer也相當不錯,完美支持http。但是在支持rtsp上,不是很好,主要表現在緩衝時間較長,編程接口少,並且有些rtsp鏈接無法播放。


於是開始關注第三方播放器,可選的是兩個:一個是vlc,老牌播放器,兼容性好,口碑好,但是在android平臺上剛移植出來,穩定性易用性什麼的都沒保障。還有一個是國人開源項目vitamio,它是專門針對android設計的,接口非常易用(直接封裝成videoview了,並且接口基本與android自帶的videoview一模一樣,可以直接替代)。但是vitamio也存在與系統mediaplayer一樣的問題,對於某些rtsp同樣無法播放。所以我很懷疑vitamio不過是把android本身的mediaplayer和videoview拿出來自己做了一個開源項目。對於系統mediaplayer不滿意的可以用vitamio,編程接口多,並且能避免不同機子對mediaplayer和videoview實現差異引起的兼容性問題。


所以我就選了vlc。直接去vlc官網下載vlc for android,包括源碼包和vlc app。項目中使用的話,直接把源碼中的LibVLC那個目錄拖進自己的工程就好了。LibVLC java代碼就是封裝了C庫jni接口,對外提供了一個LibVLC對象,初始化、播放、停止,這些接口是很明確的,直接拿來用就行了,我們只需要自己再封裝一個videoview,把圖像顯示在view上就可以了。


至於vlc依賴到的so庫,其實很簡單,不用按網上的去自己編譯,直接把vlc app解壓開來,把裏面一共4個so拖到自己項目來就行了。呵呵呵,尼瑪這是有多懶。


補充vlc一個bug:對於http流媒體,調用stop接口會阻塞很長一段時間。具體原因未研究,最後在項目中我就一分爲二了,對於http流媒體,仍使用系統自帶videoview。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章