2014-01-28 81 views
1

我需要在我的應用程序中使用多瀏覽器,gridlayout中的每個視圖都必須顯示來自流式傳輸rtsp的攝像機的視頻。android MediaPlayer替代rtsp streaming

我嘗試使用Android VideoView和MediaPlayer的,但結果不能滿足我,我有太多的等待時間啓動視頻,並採用了Lg L9手機的兼容性問題(見my question here

我搜索了很多關於第三方SDK ,我發現Vitamio,但它不支持同一活動中的多視圖(有一個bug)。另一個商業sdk是Nexstreaming,但不適用於rtsp協議。 我沒有找到其他的東西。你認識別人嗎?

使用NDK可能是另一種方式,所以我看過Gstreamer(tutorial),但它看起來太複雜了。另一種方式可能是FFMPEG,但我還沒有找到一個明確的指導。

任何幫助?

+0

哈維你試過用GStreamer嗎?它是否比默認的播放視頻更好? – Piotr

回答

1

VideoView和MediaPlayer基於硬件解碼器,專用於不同設備,製造商和平臺。它們經過優化以提供最佳的播放體驗(例如1080p),但是當多個實例必須同時處於活動狀態時,它們會變得殘缺不全。我從未見過可以打開超過4個「OMX句柄」的Android設備。但是甚至不能保證兩個都能工作。並且這些框架不是爲了在HW資源耗盡時回退到軟件解碼器。幸運的是,當代設備具有足夠的通用計算能力以用解碼的視頻流(例如,用於960×540顯示器的四個270p流)填滿整個屏幕。 Gstreamer使用ffmpeg來解碼流,但是這個庫可能更適合你的目的,因爲它包裝了必要的功能,你可以忽略次要的實現細節。

我相信你會更好地使用OpenGL表示層,因爲這樣你可以使用着色器將顏色轉換卸載到GPU上,該着色器需要YUV 4.2.0平面圖像(由解碼器生成),並顯示RGB 24 bpp紋理。

+0

那麼,做一個新手的視頻流有什麼簡單的方法呢? – tulkas85

+0

您是否嘗試過在[視頻播放器教程](http://docs.gstreamer.com/display/GstSDK/Android+tutorial+3%3A+Video)中增加視頻接收器?正如我所說的,如果您使用GPU進行yuv到rgb的轉換和縮放,您可能會發現性能顯着提高。 [這個討論](http://forum.openframeworks.cc/t/gstreamer-and-opengl/4789)表明這個想法對於GStreamer範式並不完全陌生。 –