通过UDP处理RTSP的数据丢失

通过UDP处理RTSP的数据丢失,udp,rtsp,data-loss,Udp,Rtsp,Data Loss,我通过UDP(视频数据)接收RTP RTP保存着我需要解码的H264。不幸的是,大多数RTP都保存着零碎的数据。由于RTP序列缺失,我无法正确重建H264 有没有关于如何减少数据丢失以便能够解码至少o帧的想法?没有多少人可以说。正如形容词所暗示的那样,丢失的数据也会丢失。你拿不回来。在几乎任何情况下,您仍然可以将剩余的nal馈送到解码器中并渲染视频。您将看到由丢失的NAL引入的工件,但这就是生命 丢失的数据将丢失 为了减少数据丢失,您需要更改传输协议。基于类似技术栈的RTSP中的交错RTP可能是

我通过UDP(视频数据)接收RTP

RTP保存着我需要解码的H264。不幸的是,大多数RTP都保存着零碎的数据。由于RTP序列缺失,我无法正确重建H264


有没有关于如何减少数据丢失以便能够解码至少o帧的想法?

没有多少人可以说。正如形容词所暗示的那样,丢失的数据也会丢失。你拿不回来。在几乎任何情况下,您仍然可以将剩余的nal馈送到解码器中并渲染视频。您将看到由丢失的NAL引入的工件,但这就是生命

丢失的数据将丢失

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


显然,只有当您有足够的带宽传输视频时,更改为TCP才会有所帮助

如果您可以控制H264编码器,请启用错误恢复工具(http://www.slideshare.net/coldfire7/error-resiliency-and-concealment-in-h264-presentation) 这使您的视频对传输错误更具鲁棒性


因此,UDP上的RTP对数据包丢失具有“更强的抵抗力”

我是通过Internet而不是LAN捕获的,这可能会增加丢失百分比。正如您所说,我将剩余的NAL提供给解码器,图像完成了约20%。我还尝试删除所有不完整的帧。此外,我还尝试使用
mp3parser
将h264放入mp4容器中,但这似乎不起作用。我想我必须坚持TCP协议。或者你有什么建议?如果你想在不可靠的网络上可靠地传输数据,TCP可能是你最好的选择。你可以控制服务器端吗?如果是:正如我在RTSP中添加的编辑:交错RTP如果否:您无能为力!我可以告诉服务器改用TCP(通过RTSP)。您能推荐一个通过TCP解码RTP/H264的好资源吗?到目前为止我一直用这个。问题是,很明显,我只收到0频道的RTP。此外,在这种情况下,不确定从何处获取SP和PPS。如果网络没有足够的带宽来传输视频,TCP将使情况变得更糟,而不是更好(因为TCP的开销更大)。唯一真正的解决方案是降低源的比特率,或者获得更快的网络。