Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 处理原始视频时,如何在H.264编解码器中构造P帧_Video_Encoding_Video Streaming_H.264_Video Processing - Fatal编程技术网

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

Video 处理原始视频时,如何在H.264编解码器中构造P帧,video,encoding,video-streaming,h.264,video-processing,Video,Encoding,Video Streaming,H.264,Video Processing,我试图了解视频编解码器的工作原理,其中之一是H.264 我在网上浏览了一些关于H.264工作原理的文章,我希望能对其有所了解 在阅读相同内容的同时,我了解了不同类型的帧,如I-Frame、p-Frame和B-Frame,它们在流式传输使用H.264编码的视频时使用 我无法理解的是,给了一个原始视频,视频中显然有帧方面的数据,网络上的文献说,I-frame是原始帧,因为它是从先前的I-frame或p-frame预测出来的,在这里,当一个P-Frame还不存在时,如何从另一个P-Frame预测一个P

我试图了解视频编解码器的工作原理,其中之一是
H.264

我在网上浏览了一些关于H.264工作原理的文章,我希望能对其有所了解

在阅读相同内容的同时,我了解了不同类型的帧,如
I-Frame
p-Frame
B-Frame
,它们在流式传输使用
H.264
编码的视频时使用

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

同样让我困惑的是对
p-Frame
的预测


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

考虑您最后对B框架的评论。视频编码器有一个缓冲区,用于保存一定数量的帧

让我们考虑一个例子,其中前4个帧将被编码为以下结构: 第一帧被编码为I帧(帧内)。第2帧和第3帧是B帧,无法立即编码,因为它们正在等待“未来”帧P。因此它们被放入缓冲区。当帧4到达编码器时,它被互编码(单向),第一帧(I帧)作为参考。现在P帧已经被编码,因此在过去和将来需要参考的双向帧2和3可以被编码(帧间,双向)

所以编码顺序是:ipbb。这与显示顺序不同


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

据我所知,一旦开始视频编码,编码视频的第一帧总是
I-frame
p-frame
意味着只有一些像素仍然存在(通常是移动/更改的像素)图片的其余部分是根据前一帧中已知的内容预测(或复制)的。请参阅本文的上半部分。请记住,视频帧在时间上向前移动,因此您可以始终检查前一帧的图像(当所有部分解码并拼接在一起时,它本身看起来就像一个关键帧),H.264中也有一个
运动向量来引导像素流等。因此,从技术上讲,您可以将其称为“预测”像素应放置在此图像中的位置。@VC.One您应将您的评论升级为答案。这确实是一个术语问题,因为没有什么是“预测的”,就像“预言家预测的”。相反,后续P帧是使用运动向量和变换系数从I帧和P帧表示的可用信息构建的。使用B帧会变得更复杂。@Krishna_Oza你也应该检查一下这一点,也许a的PDF可以帮助你理解帧类型关系…+1提到解码顺序和显示顺序之间的区别。这就是为什么MPEG解码器处理用于显示的PTS(表示时间戳),还有DTS(解码器时间戳),它告诉帧应该在什么时候解码并保存在缓冲区中或显示。。因此,P帧将比B帧具有更快的DTS,但是对于终端视频查看器,B帧的帧/时隙处的图像将首先显示(时间单元2和时间单元3),然后显示(时间单元4)的P帧。。因此,未来的预测(或分析)将显示“更快”的图像。