MPEG I,B,P的顺序

本文介绍了MPEG视频压缩算法的基本原理,包括采用离散余弦变换降低空间冗余度,利用预测编码和运动补偿技术减少时间冗余度。文中详细解释了I帧、P帧和B帧的作用及编码顺序,帮助读者理解MPEG标准如何实现高效的视频数据压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPEG视频压缩算法的特点 
  数字化后的数据量之大非常惊人,如果不对原始视频图像数据进行压缩,则在与VCD 相同的光盘上只能存储20秒钟的中等分辨率(640*480)彩色视频图像。Phlips和JVC公司在制定VCD标准时采用了MPEG-1数字图像压缩编码国际标准(ISO/IEC11172),因此无论是专业或个人VCD 制作系统均使用支持MPEG-1标准的视频图像压缩卡对视频信号进行压缩。

  视频图像在时间和空间视频图像上具有很大的相关性。MPEG 视频压缩算法主要采用离散余弦变换(DCT)来降低空间冗余度,采用预测编码和运动补偿技术来减少时间冗余度。MPEG压缩算法中定义了三种不同类型的图像:帧内编码图像:I。预测图像PC和双向预测图角2。I帧图像是用DCT压缩,不需要其它的图像作参考。P帧图像采用预测编码和运动补偿技术,只记录相对前面I帧和P帧图像的预测误差和运动的固执、估值。B帧图像也采用预测编码和运动补偿技术,但记录的是相对前后I帧或P帧图像的预测误差和运动估值。标准的MPEG压缩编码数据流是I、P、B三种图像的组合,每隔0。5秒有一帧图像,每两个B图像插在一对I或P图像之间,因此典型的MPEG视频编码序列为IBBPBBPBB......


图像压缩原理简介之MPEG

MPEG视频部分 
 ·在H.261中,只有两种帧:I帧和P帧。 


·问题,很多宏块需要的信息在参考帧中找不到,如下图中,第二帧里的园(周围无阴影)在第一帧中无相应信息。


·针对上一问题,MPEG中定义了第三种帧类型:双向预测帧,称为B帧(B-frame) 
·B帧在过去的(I帧)和未来的(P帧)中进行运动向量搜索。 
·典型的编码图像序列为:IBBPBBPBB IBBPBBPBB IBBPBBPBB I… 
·对于编码器,图像序列的编码顺序为:IPBBPBBIBB PBBPBBIBB PBBPBBIBB… 




总结:

视频编码顺序不外乎两种:

(1) IPBBPBBPBB IPBBPBBPBB

图像PictureHeader结构体中有一个属性(tempral-reference: in video , for diplay order)。该情况下,对应的值序列应该是:

    0,3,1,2,6,4,6,9,7,8  0,3,1,2,6,4,6,9,7,8 

tempral-reference一般情况下是连续的(0,1,2,3,...),但也有不连续的情况,每帧间隔一样。大小顺序都是从小到大递增。

(2) IBBPBBPBB IBBPBBPBB

    该情况下,对应的值序列应该是:

     2,0,1,5,3,4,8,6,7  2,0,1,5,3,4,8,6,7

 想必,这样更清楚了吧。


参考资源链接:[H264编码中POC与frame_num详解:顺序与解码策略](https://wenku.youkuaiyun.com/doc/6412b5a1be7fbd1778d43d51?utm_source=wenku_answer2doc_content) 在H264编码标准中,B和I/P的编码顺序与显示顺序之间的差异主要体现在依赖性和解码策略上。B(双向预测)的编码依赖于I(关键)或P(前向预测),这导致了编码顺序和显示顺序不一致的问题。 首先,frame_num是根据编码顺序递增的计数器,对于编码,其值总是偶数,并且在编码过程中按顺序递增。例如,一个序列IPB...的frame_num可能分别是0、2、4...。对于B,其frame_num必须等于其后向参考(即其后第一个I或P)的frame_num。 而POC是一个连续的计数器,它用来表示在视频流中的显示顺序,即使对于B也是如此。POC的值是由高位(Pic_Order_Cnt_Msb)和低位(Pic_Order_Cnt_Lsb)组合而成的,当低位达到最大值时,会向高位进位。例如,在一个IPBPB...的编码序列中,POC的值可能是0、1、2、3...或者更高位的组合。 在解码过程中,由于B的解码依赖于未来I/P的信息,所以解码器需要通过维护一个缓冲列表(buffer list),来存储那些还未用于解码的。B被放入缓冲列表中,直到其依赖的被解码并可用于参考。此时,解码器会根据POC和frame_num来确定每的正确位置和解码时机。 具体来说,解码器使用参考列表(reference picture list),结合POC值,来识别和重排序缓冲区中的,以确保B能使用正确的I/P进行预测。这种基于POC和frame_num的缓冲区管理和排序机制,是保证H264编码视频解码正确性和效率的关键。 因此,理解并正确应用POC和frame_num对于实现H264视频的正确解码至关重要。它们不仅是依赖性的指示器,也是解码顺序管理的关键工具。如果你希望深入学习H264编码中POC和frame_num的更多细节,包括如何处理不同编码策略和排序算法,请查阅《H264编码中POC与frame_num详解:顺序与解码策略》这份资料。它不仅涵盖了你当前的问题,还提供了更广泛的理解和应用,帮助你在视频编码领域更进一步。 参考资源链接:[H264编码中POC与frame_num详解:顺序与解码策略](https://wenku.youkuaiyun.com/doc/6412b5a1be7fbd1778d43d51?utm_source=wenku_answer2doc_content)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值