H.264帧类型
主要有五种编码帧:I(IDR帧)、i(非IDR I帧)、P(P帧)、B(参考B帧)、b(非参考B帧)。
1. IDR帧,NALU_type = 0x65。IDR帧是一种特殊的I帧,在解码IDR帧前,清空所有前后向参考缓冲区,IDR帧随后的所有帧不能参考IDR前面的任何帧。IDR帧是视频安全的随机访问点,找到一个IDR帧可以丢弃前面所有帧数据而正确解码。
2. i帧是帧内预测帧,它的解码不依赖与任何其他帧。NALU_type = 0x61。有些解码器没有区分这两种I帧,将所有的i帧都缺省的认为是IDR帧,这样会造成解码错误。这两种i帧在open-GOP的结构中需要明确区分,而在close-GOP中可以视为相同。
3. P帧即前向预测编码图像帧,参考之前的I帧或P帧,NALU_type = 0x41。
4. B帧即双向预测编码图像帧,参考前向或/和后向I帧或P帧。B帧也可以作为参考帧,但一般不常用。B帧提供最高的压缩比,NALU_type = 0x21 或 0x01。
GOP参数
GOP(Group of picture 图像组),指两个I帧之间的所有帧结构。
x264里面决定GOP长度的参数有i_keyint_max,i_keyint_min,i_scenecut_threshold,b_open_gop.
i_scenecut_threshold是场景切换概率值,x264会计算当前帧与前一帧的不同程度并得出一个值。如果这个值低于i_scenecut_threshold,那么就认为场景之间有切换,
主要有五种编码帧:I(IDR帧)、i(非IDR I帧)、P(P帧)、B(参考B帧)、b(非参考B帧)。
1. IDR帧,NALU_type = 0x65。IDR帧是一种特殊的I帧,在解码IDR帧前,清空所有前后向参考缓冲区,IDR帧随后的所有帧不能参考IDR前面的任何帧。IDR帧是视频安全的随机访问点,找到一个IDR帧可以丢弃前面所有帧数据而正确解码。
2. i帧是帧内预测帧,它的解码不依赖与任何其他帧。NALU_type = 0x61。有些解码器没有区分这两种I帧,将所有的i帧都缺省的认为是IDR帧,这样会造成解码错误。这两种i帧在open-GOP的结构中需要明确区分,而在close-GOP中可以视为相同。
3. P帧即前向预测编码图像帧,参考之前的I帧或P帧,NALU_type = 0x41。
4. B帧即双向预测编码图像帧,参考前向或/和后向I帧或P帧。B帧也可以作为参考帧,但一般不常用。B帧提供最高的压缩比,NALU_type = 0x21 或 0x01。
GOP参数
GOP(Group of picture 图像组),指两个I帧之间的所有帧结构。
x264里面决定GOP长度的参数有i_keyint_max,i_keyint_min,i_scenecut_threshold,b_open_gop.
i_scenecut_threshold是场景切换概率值,x264会计算当前帧与前一帧的不同程度并得出一个值。如果这个值低于i_scenecut_threshold,那么就认为场景之间有切换,