在h264流中,I帧是关键帧,而非IDR I帧则是非关键帧。在引入了恢复点SEI和exact_match = 1之后,非IDR I帧仍然具有特殊的含义。具体来说,恢复点SEI允许流的接收方在错误发生时从某个点恢复流,而exact_match = 1则表示该非IDR I帧可以用于恢复点。
代码示例:
在h264编码器中设置恢复点SEI和exact_match = 1:
x264_param_t param;
x264_param_default_preset(¶m, "medium", "zerolatency");
x264_param_apply_profile(¶m, "baseline");
param.i_keyint_max = 10;
param.i_recovery_point_sei = X264_RECOVERY_POINT_SEI_IDR;
param.i_recovery_point = 1;
param.b_sliced_threads = 0;
param.b_repeat_headers = 1;
param.b_annexb = 1;
param.i_bframe_adaptive = X264_B_ADAPT_FAST;
param.i_bframe = 2;
param.b_weighted_bipred = 0;
param.analyse.intra = 4;
param.analyse.inter = 14;
param.analyse.b_transform_8x8 = 1;
param.analyse.b_dct8x8 = 0;
param.analyse.i_trellis = 0;
param.i_threads = 1;
param.i_width = 1280;
param.i_height = 720;
param.rc.i_bitrate = 2000;
param.rc.i_vbv_max_bitrate = 4000;
param.rc.i_vbv_buffer_size = 2000;
param.rc.f_rf_constant = 16;
x264_t *h = x264_encoder_open(¶m);