视频编码之I帧P帧B帧

Posted elena_w

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频编码之I帧P帧B帧相关的知识,希望对你有一定的参考价值。

一、视频传输原理
     视频是利⽤⼈眼视觉暂留的原理,通过播放⼀系列的图⽚,使⼈眼产⽣运动的感觉。单纯传输视频画⾯,视频量⾮常⼤,对现有的⽹络和存储来说是不可接受的。为了能够使视频便于传输和存储,⼈们发现视频有⼤量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就⼤⼤减少了视频数据的⽂件,因此有了H.264视频压缩标准。

      在H.264压缩标准中I帧、P帧、B帧⽤于表⽰传输的视频画⾯。在视频压缩中,每帧都代表着一幅静止的图像。在实际的视频压缩编码时,会采取各种算法减少数据的容量,其中IPB帧就是最常见的一种算法。
     
二、预测编码

       预测编码分为帧内、帧间预测编码

       1、帧内预测编码

         I帧

         I帧⼜称帧内编码帧,又称全帧压缩编码帧,是⼀种⾃带全部信息的独⽴帧,⽆需参考其他图像便可独⽴进⾏解码,可以简单理解为⼀张静态画⾯。视频序列中的第⼀个帧始终都是I帧,因为它是关键帧。I帧通常是每个GOP(MPEG所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,作为随机访问的参考点,可以当成静态图像。

        2、帧间预测编码

         (1)P帧
        P帧⼜称帧间预测编码帧,又称前向预测编码帧,需要参考前⾯的I帧才能进⾏编码。表⽰的是当前帧画⾯与前⼀帧(前⼀帧可能是I帧也可能是P帧)的差别。解码时需要⽤之前缓存的画⾯叠加上本帧定义的差别,⽣成最终画⾯。与I帧相⽐,P帧通常占⽤更少的数据位,但不⾜是,由于P帧对前⾯的P和I参考帧有着复杂的依耐性,因此对传输错误⾮常敏感。通常将图像序列中前面已经编码帧的时间冗余信息充分去除来压缩传输数据量的编码图像,也称为预测帧。

         (2)B帧
        B帧⼜称双向预测编码帧,又称双向预测内插编码帧,也就是B帧记录的是本帧与前后帧的差别。也就是说要解码B帧,不仅要取得之前的缓存画⾯,还要解码之后的画⾯,通过前后画⾯的与本帧数据的叠加取得最终的画⾯。B帧压缩率⾼,但是对解码性能要求较⾼。既考虑源图像序列前面的已编码帧,又顾及源图像序列后面的已编码帧之间的时间冗余信息,来压缩传输数据量的编码图像,也称为双向预测帧。
         3、从解码的角度来理解I、P、B帧

         I帧:自身可以通过视频解压算法解压成一张单独的完整视频画面,所以I帧去掉的是视频帧在空间维度上的冗余信息。

        P帧:需要参考前面的I帧或者P帧来解码成一张完整的视频画面。

        B帧:需要参考前一个I帧或者P帧及其后面的一个P帧来生成一张完整的视频画面,所以P帧与B帧去掉的是视频帧在时间维度上的冗余信息。

       4、总结:
       I帧只需考虑本帧;P帧记录的是与前⼀帧的差别;B帧记录的是前⼀帧及后⼀帧的差别,能节约更多的空间,视频⽂件⼩了,但相对来说解码的时候就⽐较⿇烦。因为在解码时,不仅要⽤之前缓存的画⾯,⽽且要知道下⼀个I或者P的画⾯,对于不⽀持B帧解码的播放器容易卡顿。

I帧B帧P帧NALU类型

i帧 i frame,即内部画面 intra picture,通常是GOP的第一个帧(即IDR)
I帧是最大去除图像空间冗余信息而压缩得到的帧,自带全部信息,不参考其他帧可独立解码,称为帧内编码帧
所有视频至少包含一个I帧,且作为文件的第一个帧,文件里的其他的I帧用来改善视频质量,但增加了文件大小
一般而言,每秒视频至少需要1个I帧,每秒里增加I帧可以改善质量,但增加网络带宽和网络负载
视频播放过程中,若I帧丢失,则随后的P帧也就无法解析,所以出现黑屏现象,若P帧丢失,则出现花屏、马赛克现象

P帧,前向搜索帧/前向预测帧;B帧,双向搜索帧/双向内插帧,他们基于I帧来压缩数据。
以I帧预测P帧,由I帧、P帧预测B帧

P帧压缩:根据本帧与相邻的前一帧(I帧或P帧)的不同点来压缩本帧数据
P帧重构:以前面相邻I帧为参考帧,计算P帧某点的预测值和运动矢量得到P帧某点样值
B帧压缩:根据本帧与相邻的前一帧的差值、本帧与相邻的后一帧的差值来压缩本帧数据
B帧重构:以相邻的前面相邻帧(I或P)、后面相邻帧(P)为参考,找出B帧某点的预测值和两个运动矢量得到B帧某点样值

I帧编码减少空间域冗余,P、B帧编码减少时间域冗余

NTSC = national television system committee 应用于美国、日本、加拿大、墨西哥等
PAL  = phase alternating line 应用于中国、香港、中东、欧洲
GOP  = group of pictures  其最大可含帧数量 18(NTSC)/15(PAL)
GOP是有固定模式的一系列I、P、B帧组成
常用结构由15帧(PAL)组成,具有以下形式IBBPBBPBBPBBPBB,简称GOP(4,2),指的是该图像组除了1个I帧外,包含4个P帧,且
任何相邻I、P之间或相邻P、P之间存在2个B帧

IDR  = instantaneous decoding refresh 即时解码刷新  IDR一定是I帧,但I帧不一定是IDR
为了区分帧序列的首个I帧和其他I帧,才定义首个I帧为IDR,解码器只可以从IDR开始解码,IDR表示一组新的帧序列GOP
在IDR帧之后的所有帧都不能引用该IDR之前的帧数据,在普通I帧之后的B、P帧可以引用该普通I帧之前的I帧
ID会导致DPB(decord picture buff 参考帧列表)清空,导致PPS、SPS参数更新



























以上是关于视频编码之I帧P帧B帧的主要内容,如果未能解决你的问题,请参考以下文章

音视频-帧、DTS、PTS

H264之帧编码——透析(I帧+P帧+B帧编码)原理与流程

I帧B帧P帧NALU类型

音视频 - H264结构

视频压缩编码 gop(Group of Pictures)(I帧间隔)的概念IDRI帧(关键帧,intra picture)P帧B帧帧内压缩帧间压缩pts(显示时间)dts(解码时间)

I帧,P帧,B帧,视频码率,帧率和分辨率 区别和理解