如何让Android顺利播放高质量的RTSP流?

时间:2011-06-22 20:26:56

标签: android video streaming rtsp darwin

有没有人有幸通过RTSP将高质量视频(超过1000kbps)流式传输到Android?

我们目前拥有低质量的视频流(大约200kbps),可以在3G上运行得非常好。现在,我们正努力为用户提供更快速的连接时提供高质量的流。高质量的视频在VLC中流畅播放,但即使在4兆位连接上,Android播放似乎也会丢帧并变得模糊。

YouTube应用似乎使用普通的HTTP下载来获得高质量的视频。这很好用,播放流畅,但不适用于流式直播视频。有没有人通过RTSP将高质量视频传输到Android?

视频使用H.264,1500kbps,24fps和720x480分辨率进行编码。在应用程序中,我们使用VideoView播放视频。我们正在使用Darwin Streaming Server,但如有必要,我们可以使用其他选项。

Update 6/23/2011

今天再看看达尔文。到目前为止,我只是在Darwin模块中记录请求和会话信息。

原始Droid尝试使用这些设置:3GPP-Adaptation:...size=131072;target-time=4000。虽然这意味着它需要4秒的缓冲,但131Kb仅能以1200kbps的速度保持大约一秒的播放时间。据我所知,1200kbps很大,但对于高质量视频(720x480上的最小压缩)是必要的。

我试图强迫客户缓冲更多,但我还没弄明白该怎么做。我只是查看Darwin Streaming Server源代码并试图弄清楚它们是如何做的。任何达尔文专家在那里?

Update 6/24/2011

事实证明,使用普通的旧HTTP来按需观看视频效果很好而且不会降低质量。当我们进行直播时,我们将不得不更多地关注RTSP。

1 个答案:

答案 0 :(得分:2)

即使网络能够以该速率传输,您仍然需要对其进行解码。你用什么解码?您可能需要使用NEON加速视频解码器,这样您就可以拥有合适的帧速率和合适的缓冲区......图形处理器的性能与它所在的总线一样好......还有什么编码设置和决议?

编辑:您正在以高比特率编码那些,其中一半会很好。您还需要确定问题所在。 mediaPlayer是否获取数据并且无法以合适的帧速率进行流式传输,在这种情况下,您必须使用自己的播放器替换MediaPlayer代码。这是网络问题,那么只有解决方案是降低比特率,600Kbps就可以了(或500Kbps视频,128Kbps音频),它是你的200k流的3倍,而在屏幕上这么小,差别不明显。