2

我正在开发一种丰富的远程桌面系统,使用 avcodec/x264 编码的桌面视频流。我必须手动设置流的 GOP 大小,到目前为止我使用的大小为 fps/2。但我刚刚在维基百科上阅读了以下内容:

这种结构 [Group Of Picture@] 提出了一个问题,因为需要第四帧(P 帧)来预测第二帧和第三帧(B 帧)。所以我们需要在 B 帧之前传输 P 帧,这会延迟传输(需要保留 P 帧)。

这意味着我创建了很多延迟,因为客户端需要接收至少一半的 GOP 才能输出 I 帧之后的第一帧。如果我想要尽可能小的延迟,那么 GOP 大小的最佳策略是什么?一张照片的gop?

4

1 回答 1

2

如果你想用 h264 最小化延迟,你通常应该避免 b 帧。这样,解码器至少有机会提前发出解码的帧。这可以防止解码器引起的延迟。

您可能还想通过减少/禁用前瞻来调整编码器的延迟。x264 具有“零延迟”设置,这应该是找到最佳设置的良好起点。

“GOP”大小(afaik 并未真正为 h264 定义;我假设您的意思是 I(DR) 帧间隔)不一定会影响延迟。此参数仅影响客户端必须等待多长时间才能在流上“同步”(第一张图片的时间)。

于 2017-01-07T16:05:53.243 回答