通过UDP流式传输h.264编码视频

时间:2010-09-29 18:35:39

标签: video udp video-streaming mp4 h.264

我不太了解h.264,但问题是我在h.264中有一个mp4容器中的视频,我想通过UDP流式传输。

我的问题很简单,在对视频进行编码时,我是否可以进行任何调整,以便它能够相当容忍一些“光”数据包丢失?

我知道压缩视频通常每N帧有一个关键帧,然后在它们之间只发送增量。我可以想象h.264应该比那复杂得多,所以它可能不是那么简单。

更确切地说,我一直在做一些实验,并意识到只要从视频流中删除1024个字节,我就会从丢失点开始将其完全“无法播放”。

我想要的是容忍这样的光损失,是否可能?

由于

纳尔逊

1 个答案:

答案 0 :(得分:10)

这取决于您丢失的数据。 H264流中的某些数据不是可能丢失的数据。例如,如果您丢弃1024字节的实验碰巧是您发送的前1024个字节,那么您可能删除了序列参数集和图片参数集(SPS / PPS),这基本上是告诉解码器如何的信息解释传入的信息。您也可能不能只从流中删除1024个字节;通常H264是打包的,所以无论如何都不会发生这种情况。

所以H264确实包含一些真正不“丢弃”的小数据;许多流媒体协议(如RTSP)通过明确说明您不应通过有损传输通道发送此类信息,而是在SDP交换期间(通过TCP发生)来明确这一点。

就损耗容限而言,H264确实具有有助于损失容限的功能(ASO,FMO等),但实际上大多数编码器都不支持它们。如果可以,我会使用x264;他们的低延迟流式传输配置据称即使丢包率高达20%或更高也能正常工作。如果您的H264已经编码,则没有太多工作要做。您的视频已经过编码,您必须按原样播放。

相关问题