2011-06-22 77 views
3

有沒有人有幸通過RTSP將高質量視頻(超過1000kbps)傳輸到Android?如何讓Android平穩播放高質量的RTSP流?

我們目前擁有低質量的視頻流(大約200kbps),可以在3G上運行得非常出色。現在,我們正試圖爲用戶連接速度更快的時間提供高質量的流。高質量視頻在VLC中播放流暢,但即使在4兆位連接上,Android播放似乎也會丟幀並變得塊狀。

看起來YouTube應用程序使用普通的HTTP下載來獲得高質量的視頻。這個效果很好,播放流暢,但不適用於流式直播視頻。有沒有人有幸通過RTSP將高質量視頻流傳輸到Android?

視頻採用H.264,1500kbps,24fps和720x480分辨率編碼。在應用程序中,我們使用VideoView播放視頻。我們正在使用達爾文流媒體服務器,但如果有必要,我們可以開放其他選項。

更新2011/6/23

今天通過達爾文看更多。到目前爲止,我只是將請求和會話信息記錄在達爾文模塊中。

原始Droid嘗試使用這些設置:3GPP-Adaptation:...size=131072;target-time=4000。雖然這意味着它需要4秒的緩衝區,但131Kb只能在1200kbps的時間內保持大約一秒的播放速度。據我所知,1200kbps很大,但對於高質量視頻(720x480最小壓縮率)是必要的。

我想強制客戶端緩衝更多,但我還沒有想出如何做到這一點呢。我只是通過Darwin流媒體服務器源代碼進行查看,並試圖弄清楚它們是如何做的。達爾文的專家在那裏?

更新2011年6月24日

事實證明,使用普通的舊的HTTP點播觀看視頻,沒有質量的損耗效果很好。當我們直播時,我們將不得不更多地關注RTSP。

+0

嘿,你能告訴我你是如何獲取HTTP URL的嗎?我目前正在使用YouTube Gdata API(用於搜索),但獲得的質量很低;這對我來說會更好,謝謝。 編輯:你正在做你自己的流媒體,沒關係:) –

回答

1

那麼即使網絡能夠以這樣的速率傳輸,你仍然需要對它進行解碼。你用什麼解碼?您可能需要使用NEON加速視頻解碼器,以便您可以擁有合適的幀速率和適當大小的緩衝區......圖形處理器的性能與其所處的總線一樣好......還有什麼是您的編碼設置和解決方案?

編輯:你正在編碼那些高到很高的比特率,一半會做的很好。此外,您需要確定問題所在。 mediaPlayer是否獲取數據並且未能以合適的幀速率進行流式處理,在這種情況下,您必須用自己的播放器替換MediaPlayer代碼。這是網絡問題,那麼只有解決方案是降低比特率,600Kbps將是很好(或500Kbps視頻,128Kbps音頻),它是你的200K流的3倍,在這個小的屏幕上,差異不明顯。

+0

我將編碼和分辨率添加到原始文章。我們將解碼放到Android的MediaPlayer上,它應該使用Stagefright,但也可以在其他設備上使用OpenCore。 –

+0

不幸的是,我在實時工作的唯一解決方案是http://www.tokbox.com/opentok/api/features可能不適合您的需求。所以我真的很感興趣看看別人有什麼話要說。 – Astronaut