什么是I帧,P帧,B帧

原创 2011年06月30日 18:53:00

视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。
  
简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。
 
 


I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)


P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)


B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。


从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进,大家很舒服。
但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉,因为B帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的B帧,B帧用的多,对不支持B帧的播放器就造成更大的困扰,画面也就越卡。
 
一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。


下面举例说明:



在如上图中,GOP (Group of Pictures)长度为13,S0~S7 表示 8个视点,T0~T12 为 GOP的 13个时刻。每个 GOP包含帧数为视点数 GOP 长度的乘积。在该图中一个 GOP 中,包含94 个 B帧。B 帧占一个 GOP 总帧数的 90.38%。GOP 越长,B 帧所占比例更高,编码的率失真性能越高。下图测试序列 Race1 在不同 GOP 下的率失真性能对比。






H2.64中I帧和IDR帧的区别(转)

DR(Instantaneous Decoding Refresh)--即时解码刷新。       I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I...
  • heanyu
  • heanyu
  • 2011年03月17日 00:48
  • 14573

I帧B帧P帧是什么?

在了解I帧B帧P帧之前,先聊聊什么是编码过程中的帧内预测和帧间预测1. 帧内预测编码帧内编码用来缩减图像的空间冗余。为了提高H.264帧内编码的效率,在给定帧中充分利用相邻宏块的空间相关性,相邻的宏块...

[视频编码] 视频编码的三种帧:I帧,B帧,P帧

在视频压缩编码中,所有的帧被分成了三个种类,I帧,B帧和P帧,其实就是Intra-Prediction帧,Bi-prediction帧和Prediction帧。顾名思义,就是帧内预测帧,双向预测帧以及...

视频压缩:I帧、P帧、B帧

/***************************************************************************************************...

I帧和IDR帧区别

I帧和IDR帧的区别:    IDR帧属于I帧。解码器收到IDR frame 时,将所有的参考帧队列丢弃(用x264_reference_reset函数实现——在encoder.c文件中)。这点是所有...
  • SkyGray
  • SkyGray
  • 2011年03月04日 15:09
  • 11320

H264编码原理以及I帧B帧P帧

原创地址:http://blog.sina.com.cn/s/blog_4ad7c2540101me90.html 前言            H264是新一代的编码标准,以高压缩高质量和...

H264(NAL简介与I帧判断)

1、NAL全称Network Abstract Layer, 即网络抽象层。          在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面...

I帧 B帧 p帧 IDR帧的区别

IDR(Instantaneous Decoding Refresh)--即时解码刷新。  I帧:帧内编码帧是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码,视频序列中的第一个帧始终都是...
  • sphone89
  • sphone89
  • 2012年10月18日 15:53
  • 10298

H.264编码原理以及I帧B帧P帧

前言 -----------------------       H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的...

什么是I帧,P帧,B帧

P帧(预测帧) 概述: 在针对连续动态图像编码时,将连续若干幅图像分成P,B,I三种类型,P帧由在它前面的P帧或者I帧预测来,它比较与它前面的P帧或者I帧之间的相同信息或数据,也即考虑运动的特性...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:什么是I帧,P帧,B帧
举报原因:
原因补充:

(最多只允许输入30个字)