处理原始视频时,如何用H.264编解码器构造P帧

Kri*_*Oza 2 video encoding video-processing video-streaming h.264

我正在尝试大致了解视频编解码器的工作原理,其中之一是H.264

我在网络上浏览了一些有关该工具工作原理的文章,H.264希望对此有所了解。

在阅读相同的内容的时候,我知道了不同类型的帧,例如I-FrameP-FrameB-Frame,在流式传输使用H.264

我无法理解的是,给了一个原始视频,其中显然有帧的数据,网络上的文献说这I-Frame是原始帧,因为它是P-Frame从先前的I-Frame或预测的位置P-Frame,在这里如何P-Frame预测P-Frame当另一个还不存在时。

同样使我困惑的是对P-Frame

请帮助理解相同内容或参考解释相同内容的文献。

dam*_*eux 5

考虑您对B帧的最后评论。视频编码器具有一个缓冲区,可以保留一定数量的帧。

让我们考虑一个示例,其中前4个帧将使用以下结构进行编码:IBBP。

第一帧被编码为I帧(内部)。帧2和3是B帧,由于它们正在等待“未来”帧P,因此无法立即进行编码。因此将它们放入缓冲区。当帧4到达编码器时,它以第一个帧(I帧)为参考进行帧间编码(单向)。现在已经对P帧进行了编码,可以对双向的帧2和3进行编码(因此在过去和将来需要参考),可以进行编码(帧间,双向)。

因此,编码顺序为:IPBB。这与显示顺序不同。

如您所见,B帧在编码过程中引入了延迟,因此通常不用于视频会议等低延迟应用中。

  • +1表示“解码顺序”和“显示顺序”之间的区别。这就是为什么MPEG解码器处理** PTS **(演示时间戳)以进行显示,而** DTS **(解码器时间戳)则说明了该帧应该在什么时间解码并保存在缓冲区或显示中。 * P帧**的DTS **早于** B帧**,但是对于最终的视频查看器,** B帧**的帧/时隙中的图像将首先显示(在时间单位2和时间单位3)在(时间单位4)的“ P帧”之前。因此,将来的预测(或分析)将显示“较快”的图像。 (3认同)