H264 I 帧、P帧、B帧和IDR帧分析
H264中的 I帧、P帧和B帧
1、 I 帧
I 帧:帧内编码帧,I 帧表示关键帧,可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)
I 帧特点:
.1) 它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输。
.2) 解码时仅用 I 帧的数据就可以重构完整图像;
.3) I 帧描述了图像背景和运动主体的详情
.4) I 帧不需要参考其他画面而生成
.5) I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
.6) I帧是帧组GOP的基础帧(如果为IDR则为第⼀帧),在⼀组中只有⼀个IDR帧,⼀个或多个I 帧(包括IDR帧);
.7) I帧不需要考虑运动⽮量;
.8) I帧所占数据的信息量⽐较⼤。
2、P帧
P帧:前向预测编码帧。P帧表示的是这⼀帧跟之前的⼀个关键帧(或P帧)的差别,解码时需 要⽤之前缓存的画⾯叠加上本帧定义的差别,⽣成最终画⾯。(也就是差别帧,P帧没有完整 画⾯数据,只有与前⼀帧的画⾯差别的数据)
P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动⽮量,取预测 差值和运动⽮量⼀起传送。在接收端根据运动⽮量从I帧中找出P帧“某点”的预测值并与差值 相加以得到P帧“某点”样值,从⽽可得到完整的P帧。
P帧特点:
1) P帧是I帧后⾯相隔1~2帧的编码帧;
2) P帧采⽤运动补偿的⽅法传送它与前⾯的I或P帧的差值及运动⽮量(预测误差);
3) 解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
4) P帧属于前向预测的帧间编码。它只参考前⾯最靠近它的I帧或P帧;
5) P帧可以是其后⾯P帧的参考帧,也可以是其前后的B帧的参考帧;
6) 由于P帧是参考帧,它可能造成解码错误的扩散;
7) 由于是差值传送,P帧的压缩⽐较⾼。
3、B帧
B帧:双向预测内插编码帧。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具 体⽐较复杂,有4种情况,但我这样说简单些),换⾔之,要解码B帧,不仅要取得之前的缓 存画⾯,还要解码之后的画⾯,通过前后画⾯的与本帧数据的叠加取得最终的画⾯。B帧压缩 率⾼,但是解码时CPU会⽐较累。
B帧的预测与重构 :
B帧以前⾯的I或P帧和后⾯的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动⽮量,并 取预测差值和运动⽮量传送。接收端根据运动⽮量在两个参考帧中“找出(算出)”预测值并与 差值求和,得到B帧“某点”样值,从⽽可得到完整的B帧。
B帧特点:
1) B帧是由前⾯的I或P帧和后⾯的P帧来进⾏预测的;
2) B帧传送的是它与前⾯的I或P帧和后⾯的P帧之间的预测误差及运动⽮量;
3) B帧是双向预测编码帧;
4) B帧压缩⽐最⾼,因为它只反映两参考帧间运动主体的变化情况,预测⽐较准确;
5) B帧不是参考帧,不会造成解码错误的扩散。
IDR帧
⼀个序列的第⼀个图像叫做 IDR 图像(⽴即刷新图像),IDR 图像都是 I 帧图像。 I和IDR帧都使⽤帧内预测。I帧不⽤参考任何帧,但是之后的P帧和B帧是有可能参考这个I帧之 前的帧的。
IDR就不允许这样。⽐如(解码的顺序):
IDR1 P4 B2 B3 P7 B5 B6 I10 B8 B9 P13 B11 B12 P16 B14 B15 这⾥的B8可以跨过I10去参考P7
原始图像: IDR1 B2 B3 P4 B5 B6 P7 B8 B9 I10
IDR1 P4 B2 B3 P7 B5 B6 IDR8 P11 B9 B10 P14 B11 B12 这⾥的B9就只能参照IDR8和P11,不可以 参考IDR8前⾯的帧
更多推荐



所有评论(0)