在本文中,我们将了解Closed GOP 和 Open GOP 的概念。这两种 GOP 类型在视频流中都很常见,并且会影响您的压缩效率、流的错误恢复能力以及 ABR 流中的可切换性。
什么是视频编码中的 GOP 或图片组?
顾名思义,图片组 (GOP) 是具有明确定义的顺序的图片集合,它们将按照这些顺序进行编码/解码和显示。
注意:如果您不熟悉压缩和帧类型,请参阅本文以获取I 帧、P 帧和 B 帧的简化说明。
GOP 或图片组由不同类型的图片(帧)组成。从根本上说,这些照片要么
- I 帧(仅限帧内预测),
- P 帧(根据显示顺序中出现在它之前的帧预测)
- B 帧(根据显示顺序前后可能出现的帧预测)。
好的,现在有了这些基本的图片类型,我们就可以构建 GOP(即图片组)。
- GOP 通常以 I 图像开始,然后是一系列 P 和 B 帧。
- 两个连续的 I 帧之间的距离称为 GOP 的大小或 GOP 的长度。
- 连续 P 帧之间的距离称为 mini-GOP 大小。
P 帧和 B 帧参考其他帧以进行时间预测。用作预测器的帧可以是 I、P 或参考 B 帧。在 H.264/AVC 允许的多个预测变量的情况下,这三种类型的组合。
那么问题来了——在显示顺序中分析时预测器/参考帧的位置/位置是什么。换句话说,P或B-frame是否可以指代几个GOP之前的帧?这可能是最佳匹配——为什么不呢?
为了回答这些问题,我们需要了解 Open 和 Closed GOP 的概念。所以,让我们继续吧!
什么是 Closed GOP?
顾名思义,Closed GOP 不对外开放!属于 Closed GOP 的帧只能引用其自己的 GOP 中的帧。
在上图中,第一个 GOP 以 P 帧而不是 B 帧结束,这允许编码器确保来自下一个 GOP 的帧不用作预测器。作为旁注,如果 GOP 的最后一帧是 B 帧,您认为会发生什么?B 帧不是设计用来引用它之前和之后的帧吗?
那么,在这种情况下,编码器应确保后向预测器(引用未来帧)为空。您可以生成一个空的后向预测器,B 帧现在表现得像 P 帧!然而,十有八九,你的编码器将确保最后一帧是 P 图片,这简化了“关闭”GOP 的过程。
封闭 GOP 在视频流和压缩中非常有用。它们表示视频彻底中断,并确保该 GOP 中可能发生的任何问题都仅限于该 GOP。
封闭的 GOP 以称为 IDR 或瞬时解码器刷新的 I 帧开始。之所以称为 IDR,是因为当解码器遇到IDR 帧时,它可以刷新其图片缓冲区(D coded Picture B uffer 或DPB),因为在 IDR 之前出现的帧都不能用作出现的图片的参考在那个 IDR 之后。这是序列中的一个干净的中断。
那么,IDR 或 Closed GOP 有什么用呢?
- ABR 流式传输:正如您在 ABR 流式传输中所了解的那样,播放器可以根据带宽和解码器的缓冲区满度在不同的配置文件(视频的比特率-分辨率组合)之间切换。如果播放器必须从 1080p 切换到 360p,则需要一种干净的切换方式。IDR 对此有所帮助,因为现在播放器可以刷新其缓冲区并为 360p 流让路。如果您是 ABR 的新手,请阅读我们对 ABR 流的简化介绍。
- 错误恢复:例如,如果您正在使用 HLS 进行流式处理,并且每个段都以 IDR 开头,那么这意味着属于特定段的帧不能引用属于先前/未来段的帧。因此,如果您由于某些错误而丢失了一个片段,那么播放器可以继续从下一个片段开始播放。值得注意的一点是,Apple 的 HLS 规范提到应每两秒使用一次 IDR。(注意:规范并没有说片段持续时间应该是两秒——它说 GOP 的大小是两秒)。
- 技巧模式:正如我们之前提到的,IDR 在实现技巧模式(向前和向后搜索)方面非常有帮助。播放器需要寻找最近的 IDR,它可以从该点开始流式传输。
了解了 Closed GOP 后,让我们继续讨论 Open GOP。
什么是 Open GOP?
Open GOP 与 Closed GOP 相反,它允许来自 Open GOP 的帧引用来自另一个 GOP 的帧。拍摄下图中的第二个 I 帧。来自先前 GOP 的 B 帧将其用作预测器,暗示这是一个开放 GOP。它由黄色箭头表示。
Open GOP 在以下情况下特别有用:
- 您不需要为 ABR 开始新的视频片段,但需要关闭 GOP。
- 当你想要获得更高的压缩效率时,因为 B 帧现在可以访问一个更高质量的预测器。
- 当您需要插入 I 帧时(要么刷新视频质量,要么不在场景变化中,因此,预测是否发生在 I 帧上并不重要)。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/16483.html