i帧b帧p帧含义,i帧p帧b帧全称

  i帧b帧p帧含义,i帧p帧b帧全称

  转自:http://blog..net/abcjennifer/article/details/6577934

  在视频压缩中,每一帧代表一幅静止图像。在实际压缩中,会采用各种算法来减少数据量,其中IPB是最常见的一种。

  帧内编码帧、预测图像和双向预测图像.

  I帧是关键帧,属于帧内压缩。这和AVI的压缩是一样的。

  p表示向前搜索。b是双向搜索。它们都基于I帧压缩数据。

  I代表关键帧,你可以理解为这个帧的完全保留;解码时只需要这一帧的数据(因为包含了完整的画面)。

  P帧表示该帧与前一关键帧(或P帧)之间的差异。解码时,需要将该帧中定义的差值与之前缓存的图片叠加,生成最终图片。(也就是差帧,P帧没有完整的画面数据,只有前一帧的画面差数据)

  B帧是双向差帧,也就是B帧记录了这一帧和前一帧的差(有四种情况,不过我打算把这个说简单点。有兴趣可以看看我上面提供的资料)。换句话说,要解码B帧,你不仅要得到前面缓存的图片,还要解码后面的图片,把前面和后面的图片和这一帧的数据叠加,得到最终的图片。b帧压缩率高,但是解码的时候CPU会累~。

  从上面的解释我们知道,I和P的解码算法比较简单,资源占用比较少。我只需要自己完成,P也一样,只需要解码器缓存上一张图片。遇到P的时候,用之前缓存的图片就好了。如果视频流只有I和P,解码器可以读取解码后面的数据,线性向前,大家都很舒服。

  但是网上很多电影都是用B帧,因为B帧记录的是前后帧的区别,比P帧更能节省空间。但这样一来,文件大小变小了,解码器就麻烦了,因为解码的时候,不仅要用到之前缓存的图片,还要知道下一张I或P图片(也就是说预读预解码)。而且B帧也不能简单丢弃,因为B帧其实包含了图片信息。如果只是简单的重复前面的画面会造成画面卡(其实是丢帧),而且由于网络上的电影为了节省空间,往往会使用相当多的B帧,而B帧使用的次数更多,会对不支持B帧的玩家造成更多的困扰,画面会卡得更多。

  一般来说,I的压缩比是7(类似JPG),P是20,B可以达到50。可以看出,使用B帧可以节省大量的空间,节省下来的空间可以用来保存更多的I帧,在相同的码率下可以提供更好的图像质量。

  当然,切换数字电视频道时,为什么会有一两秒的延迟或者一顿饭的时间?从上面可以清楚地看出。

i帧b帧p帧含义,i帧p帧b帧全称