10

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

我的问题很简单,在对视频进行编码时,我是否可以做一些调整,以使其能够容忍一些“轻”的数据包丢失?

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

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

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

谢谢

尼尔森

4

1 回答 1

11

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

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

就容损而言,H264 确实具有应该有助于容损的特性(ASO、FMO 等),但实际上大多数编码器不支持它们。如果可以,我会使用 x264;据称,即使丢包率高达 20% 或更多,它们的低延迟流配置也能很好地工作。如果您的 H264 已经编码,那么就没有什么可做的了。您的视频已经编码,您必须按原样流式传输。

于 2010-11-10T19:40:45.713 回答