视频编解码的IPB帧显示顺序与编码顺序不同的原因

I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。

P frame: 前向预测编码帧 又称predictive-frame,通过充分降低在图像序列中前面已编码帧的时间冗余信息(运动预测、运动补偿等方式)来压缩传输数据量的编码图像,也叫预测帧;

B frame: 双向预测内插编码帧 又称bi-directional interpolated prediction frame,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧;

PTS:Presentation Time Stamp。PTS主要用于度量解码后的视频帧什么时候被显示出来

DTS:Decode Time Stamp。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码。

在没有B帧存在的情况下DTS的顺序和PTS的顺序应该是一样的。

IPB帧的不同:

  • I frame:自身可以通过视频解压算法解压成一张单独的完整的图片。
  • P frame:需要参考其前面的一个I frame 或者B frame来生成一张完整的图片。
  • B frame:则要参考其前一个I或者P帧及其后面的一个P帧来生成一张完整的图片。

        两个I frame之间形成一个GOP,在x264中同时可以通过参数来设定bf的大小,即:I 和P或者两个P之间B的数量。上述基本可以说明如果有B frame 存在的情况下,一个GOP的最后一个frame一定是P(因为B的生成依赖其前面的(I或者P)和后面的P,所以P一定是GOP的最后一帧)。

DTS和PTS的不同:

  • DTS主要用于视频的解码,在解码阶段使用。
  • PTS主要用于视频的同步和输出,在display的时候使用。
  • 在没有B frame的情况下.DTS和PTS的输出顺序是一样的.

        仅仅使用前一个显示的基准帧来编码的帧被称为“P帧”,同时使用前一个显示帧和未来帧作为基准帧进行编码的帧称为“B帧”。

        在通常的场景中,编解码器编码一个I帧,然后向前跳过几个帧,用编码I帧作为基准帧对一个未来P帧进行编码,然后跳回到I帧之后的下一个帧。编码的I帧和P帧之间的帧被编码为B帧。之后,编码器会再次跳过几个帧,使用第一个P帧作为基准帧编码另外一个P帧,然后再次跳回,用B帧填充显示序列中的空隙。这个过程不断继续,每12到15个P帧和B帧内插入一个新的I帧。例如,图1种给出了一个典型的视频帧序列。从上往下看,先编码I帧,然后1个P帧,然后3个B帧,然后1个P帧...。实际上,第一个P帧是实际图像序列中的第5帧,编码I帧后,立马编第5帧,得到一个P帧,然后基于I帧和P帧,编码中间的3帧,得到3个B帧。之后,基于第一个P帧(实际的第5帧),编码第9帧,得到第二个P帧,然后用这两个P帧,编码中间的3帧,得到3个B帧,...。

         通常,更换场景后的第一帧就是I帧,I帧应当全帧传送。从压缩的程度来看,I画面的压缩量最少;P画面次之,它是以I画面为基础;B画面压缩最多。为了加大压缩比,通常在I帧后面相隔2帧(最多3帧)设置1个P帧,在I、P帧之间都是B帧,在两个P帧之间也是设置2~3帧B帧。

        B帧传送(1)它与I帧或P帧之间的差值信息,或者(2)P帧与后面P帧或I帧之间的差值信息,或者(3)它与前后I、P帧平均值之间的差值信息,或者(4)它与前后P、P帧平均值之间的差值信息。当主体内容变化愈大时,两个I画面之间的帧数值越小;当主体内容变化小时,I面画的间隔可以适当大一些。或者说,B帧、P帧所占比例越大,图像压缩比越高。一般两个I画面相隔13~15帧,相隔帧数不宜再多。

         下面以15帧为例,说明VCD图像帧的排列顺序。I、P、B三种画面的典型设置方式,对NTSC制共约需半秒时间。节目输入顺序是按实际出现顺序排列的,即I、B、B、P、B、B、P、B、B……I、B、B、P……;但为了解码时便于从I、P画面插补得到B画面,在编码录制节目时,将顺序改变了,即按照I、P、B、B……顺序,即改为按原来0、3、1、2、6、4、5、9、7、8…的画面顺序。解码时先解出0帧、3帧,再由其插补预测计算得出1帧、2帧等等。为此,须在解码器内设置动态存储器,将I、P帧先解码并存储,再计算出各个B帧。不过最后输出时,还是应当按照实际播放顺序重组读出,按正确顺序输出。

         音视频编码卡的视频编码算法从JPEG 发展到MPEG-1、MPEG-2、MPEG-4和H.264。JPEG是一种著名的图像压缩方法,最初由Joint Photographic Experts Group在1986年提出并于1992年正式成为ISO标准(ISO/IEC 10918),主要应用于静态图像压缩,如果把它用在运动图像压缩的时候,就是我们通常所说的Motion-JPEG,由于JPEG相当于MPEG的帧内压缩,因而没有去除时域上的冗余,所以在保证一定图像质量的时候,压缩比不高,通常只有10-30倍,但是它有一个固定的优点,就是延迟在40ms,实时性很好,所以在某些特殊应用的场合仍然可以看到它的踪影。MPEG运动图像编码技术标准是由Motion Picture Experts Group在1988年提出,并于1992年11月通过,1993年8月作为ISO/IEC 11172标准公布,这就是通常所说的MPEG-1。MPEG-1为了追求更高的压缩效率,更注重去除图像系列的时间冗余度。因此引入了I帧(帧内编码)、P帧(前向预测编码)、B帧(双向预测编码)。P帧由前一个I帧或P帧图像来预测,而B帧由前后的两个P帧或一个I帧和一个P帧来预测,因而编解码和帧的显示顺序有所不同.
        在此有两个问题需要说明:首先是插多少B 帧最合适?理论上说I、P之间插入的B帧越多,压缩比越高,但是编解码器所需的帧存储器也越大,因此实际应用中一般最多两个。其次,B帧的引入会增加编解码端的延迟,如果追求网络监视的时延,最好是不使用B帧。

        MPEG-1标准的一个成功应用范例是小型激光视盘(VCD)。由于它的压缩比相对于M- JPEG大为提高,因而在数字监控系统中得到广泛的应用。但是并不是最适合数字监控系统的应用,主要表现在码率固定,代价是引起图像质量的抖动,而数字监控系统最需要的不是恒定码率,而是恒定质量。同时MPEG-1本身的技术限制,其压缩比也没有达到用户满意的程度。而2000年提出的MPEG-4不仅是一个非常开放的标准,而且增加了许多新的工具,以达到降低某些应用或图像场景中要求的图像质量所需的比特率。值得注意的是虽然大部分用来降低比特率的工具是为非实时应用开发的,无法使用到数字监控系统中,但是相对MPEG-1,由于使用半像素和1/4像素图像匹配、帧内预测、高级运动矢量预测等新的技术,因而采用MPEG-4的压缩标准之后,在PAL CIF 25fps情况下,大部分情况下码率在300k-500k的MPEG-4压缩图像质量超过1.25Mbit的MPEG-1图像,因而在数字监控系统中得到最广泛和成功的应用

原文链接:https://blog.csdn.net/jhluroom/article/details/7024534

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值