如何让安卓平稳播放高质量RTSP流?

4
有人能够通过RTSP将高质量视频(超过1000kbps)流式传输到Android吗?
我们目前有低质量视频流(约200kbps),在3G网络上工作得非常好。现在,我们正在尝试为用户提供更快的连接时可以使用的高质量流。高质量视频在VLC中播放得很流畅,但是Android播放似乎会掉帧并变得模糊,即使在4兆比特的连接下也是如此。
YouTube应用程序似乎使用普通的HTTP下载其高质量视频。这很好地运行并且播放平滑,但不适用于直播视频。有人通过RTSP成功将高质量视频流式传输到Android吗?
这些视频使用H.264编码,1500kbps,24fps和720x480分辨率进行编码。在应用程序中,我们使用VideoView播放视频。我们正在使用Darwin Streaming Server,但如果必要,我们可以考虑其他选项。
6/23/2011更新
今天我继续查看Darwin。到目前为止,我只是在Darwin模块中记录请求和会话信息。
原始Droid尝试使用这些设置:3GPP-Adaptation:...size = 131072; target-time = 4000。虽然这意味着它想要4秒的缓冲区,但131Kb只能保持大约1秒的1200kbps播放。我知道1200kbps很大,但对于高质量视频(720x480上最小压缩)是必要的。
我正在尝试强制客户端缓冲更多,但我还没有弄清楚如何做到这一点。我只是查看Darwin Streaming Server源代码并试图弄清楚他们是如何处理事情的。有Darwin专家在吗?
6/24/2011更新
事实证明,使用普通的HTTP观看点播视频效果很好,而且没有质量损失。当我们进行直播时,我们将不得不更深入地研究RTSP。

嘿,你能告诉我你是如何获取HTTP URL的吗?我目前正在使用YouTube Gdata API(用于搜索),但是得到的流质量非常低;如果你有更好的方法,请告诉我,谢谢。编辑:你正在进行自己的流媒体传输,没关系 :) - Steven L
1个回答

2
即使网络能以那个速率传输,您仍需要解码。您使用什么进行解码?您可能需要使用NEON加速的视频解码器,以便您可以获得适当的帧速率和体积适中的缓冲区...图形处理器只有在其中的总线良好时才能发挥其优势...此外,您的编码设置和分辨率是什么?
编辑:您将这些编码为过高的比特率,一半的比特率就足够了。另外,您需要确保问题所在。如果mediaPlayer获取数据并无法以合理的帧速率流式传输,则必须用自己的播放器替换MediaPlayer代码。如果是网络问题,则唯一的解决方案是降低比特率,600Kbps就足够了(或500Kbps视频,128Kbps音频),它是您200k流的3倍,在这么小的屏幕上,差异不会引起注意。

我已经在原始帖子中添加了编码和分辨率信息。我们将解码工作交给Android的MediaPlayer,它应该使用Stagefright,但也可能在其他设备上使用OpenCore。 - Tim Mahoney
不幸的是,我在实时方面工作的唯一解决方案是http://www.tokbox.com/opentok/api/features,可能不适合您的需求。因此,我非常有兴趣看看其他人有什么想法。 - Astronaut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接