处理通过UDP传输的RTSP数据丢失问题

3

我正在通过UDP接收RTPs(视频数据)。

RTPs保持着我需要解码的H264。不幸的是,大多数RTPs保持着分段的数据。由于缺少RTP序列,我无法正确地重构H264。

有没有办法减少数据损失,以便至少能解码几帧?

2个回答

2

很遗憾,失去的数据就像形容词所示,无法找回。在几乎任何情况下,您仍然可以将剩余的NAL输入解码器并渲染视频。您将看到由于缺失的NAL引入的伪影,但这就是生活。

丢失的数据就是丢失了。

为了减少数据丢失,您需要更改传输协议。基于类似技术堆栈的交错RTP在RTSP中可能是一个不错的选择。

如果您有足够的带宽来传输视频,则切换到TCP显然只会有所帮助。


我正在通过互联网进行捕获,而不是局域网,这可能会增加丢失的百分比。正如你所说,我已经将剩余的NALs提供给解码器,图像完成了约20%。我还尝试过删除所有不完整的帧。此外,我还尝试使用mp3parser将h264放入mp4容器中,但似乎没有起作用。我想我只能坚持使用TCP了。或者你有什么建议? - Display Name
如果您希望在不可靠的网络上可靠地传输数据,TCP 可能是您最好的选择。 - che
你有控制服务器端吗?如果是:如我在编辑中所添加的:在RTSP中交错RTP。如果没有:你无能为力! - Sebastian Annies
我可以告诉服务器使用TCP而不是RTSP。你能否推荐一个好的资源用于解码通过TCP传输的RTP/H264?到目前为止,我使用了这个网址:http://docs.lscube.org/rfc/rfc2326.xhtml#sec_10_12。问题是显然我仅收到通道0的RTP数据。此外,在这种情况下,我也不确定从哪里获取SPS和PPS。 - Display Name
如果网络带宽无法传输您的视频,则TCP将使情况变得更糟,而不是更好(因为TCP会增加更多的开销)。您唯一真正的解决方案是降低源的比特率或获取更快的网络。 - Jon Burgess

1
如果您可以控制H264编码器,请启用错误容错工具(http://www.slideshare.net/coldfire7/error-resiliency-and-concealment-in-h264-presentation),这将使您的视频更加抗传输错误。
这样,您的RTP over UDP就会变得“更加抵抗”数据包丢失。

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