searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MPEG的图片组概念科普:I帧、P帧和B帧

2023-07-14 07:11:06
64
0

视频压缩中,每帧代表一幅静止的图像。为了在高效编码情况下,能够获取可随机存取的高压缩比、高质量图像,在实际压缩时,大家会采取各种算法减少数据的容量,其中IPB帧就是最常见的一种。MPEG定义了三种帧类型,分别简称为帧内图预测图双向图,即I帧、P帧及B帧,用于表示1/25s时间间隔的帧序列画面。

I帧是关键帧,这一帧的画面完整保留,解码时只需要本身数据就可以完成。

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

B帧是双向差别帧,即B帧记录的是本帧与前后帧的差别。所以,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时处理器性能消耗会比较大。

简单地说,I帧是关键帧、属于帧内压缩,P帧是向前搜索,B帧是双向搜索。P、B帧都是基于I帧来压缩数据。

由此可见,I、P帧的解码算法比较简单,占用资源也较少。如果视频流只有I、P帧,解码器可以不管后面的数据,边读边解码,线性前进,处理器相对比较轻松。

举个例子,网络上的电影大都采用了更多的B帧,因为B帧能节约更多的空间。但是这样一来文件小了,解码器的压力更大,因为解码时不仅要用之前缓存的画面,还要预解码后面的画面。而且,B帧解码之后不能简单丢弃,因为后面的帧的解码也会用到这个B帧。

一般来说,I帧的压缩率是7(和JPG差不多),P是20,B可以达到50。故在相同的码率下,B帧更多则画质更好。

综上,如果要满足随机存取的要求,仅利用I帧本身信息进行帧内编码就可以了。但要满足高压缩比的要求,单靠I帧帧内编码还不够,还要加上由P帧和B帧参与的帧间编码以及快匹配运动补偿预测。这就要求帧内编码与帧间编码相平衡,最终得到高压缩比、高质量的视频。

0条评论
0 / 1000
尹****麒
163文章数
2粉丝数
尹****麒
163 文章 | 2 粉丝
原创

MPEG的图片组概念科普:I帧、P帧和B帧

2023-07-14 07:11:06
64
0

视频压缩中,每帧代表一幅静止的图像。为了在高效编码情况下,能够获取可随机存取的高压缩比、高质量图像,在实际压缩时,大家会采取各种算法减少数据的容量,其中IPB帧就是最常见的一种。MPEG定义了三种帧类型,分别简称为帧内图预测图双向图,即I帧、P帧及B帧,用于表示1/25s时间间隔的帧序列画面。

I帧是关键帧,这一帧的画面完整保留,解码时只需要本身数据就可以完成。

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

B帧是双向差别帧,即B帧记录的是本帧与前后帧的差别。所以,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时处理器性能消耗会比较大。

简单地说,I帧是关键帧、属于帧内压缩,P帧是向前搜索,B帧是双向搜索。P、B帧都是基于I帧来压缩数据。

由此可见,I、P帧的解码算法比较简单,占用资源也较少。如果视频流只有I、P帧,解码器可以不管后面的数据,边读边解码,线性前进,处理器相对比较轻松。

举个例子,网络上的电影大都采用了更多的B帧,因为B帧能节约更多的空间。但是这样一来文件小了,解码器的压力更大,因为解码时不仅要用之前缓存的画面,还要预解码后面的画面。而且,B帧解码之后不能简单丢弃,因为后面的帧的解码也会用到这个B帧。

一般来说,I帧的压缩率是7(和JPG差不多),P是20,B可以达到50。故在相同的码率下,B帧更多则画质更好。

综上,如果要满足随机存取的要求,仅利用I帧本身信息进行帧内编码就可以了。但要满足高压缩比的要求,单靠I帧帧内编码还不够,还要加上由P帧和B帧参与的帧间编码以及快匹配运动补偿预测。这就要求帧内编码与帧间编码相平衡,最终得到高压缩比、高质量的视频。

文章来自个人专栏
大视频
163 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0