一、码控参数概览
参数名称 | 参数类型 | 参数含义 | 备注说明 |
---|---|---|---|
i_rc_method | int | 码控方法 | X264_RC_CQP:固定的量化参数,随着视频运动情况,码率会上升和下降。但是码率不可控,码率大小取决于残差大小。 X264_RC_CRF:恒定质量编码(运动/纹理复杂场景,码率上升;静态/纹理简单的画面,码率下降) X264_RC_ABR:编码出来的视频码率在一个恒定值左右波动。该模式下目标码率和峰值码率配置相等的时候,就是CBR。 |
i_qp_constant | int | 固定量化因子 | X264_RC_CQP模式下有效,0:表示无损压缩。 |
i_qp_min | int | 允许的最小量化值 | 控制P帧编码质量,一般这个值不能配置太小,P帧编码质量过高,会出现视频闪烁现象。可以尝试配置为i_qp_max/2后进行微调。 |
i_qp_max | int | 允许的最大量化值 | 控制I帧编码质量。 |
i_qp_step | int | 帧间最大量化步长,即相邻两帧之间量化值之差的最大值。 | |
i_bitrate | int | 目标码率,单位kbps | |
f_rf_constant | float | 实际图像质量 | X264_RC_CRF模式下有效,配置CRF模式下期望得到的视频质量。 |
f_rf_constant_max | float | 实际图像质量的最大值 | X264_RC_CRF模式下有效,配置CRF模式下最差码率质量的门限。 |
f_rate_tolerance | float | ABR码控模式下,瞬时码率可以偏离的倍数 | 范围0.1~100.0,默认为1.0。 |
i_vbv_max_bitrate | int | ABR码控模式下,瞬时峰值码率,单位kbps | 该值与i_bitrate相等,就是CBR恒定码控模式。 |
i_vbv_buffer_size | int | 码率控制缓冲区的大小,单位kbit 控制码率收敛到目标码率的时间 | 电影电视剧,场景建议配置3倍i_vbv_max_bitrate。 |
f_vbv_buffer_init | float | 码率控制缓冲区数据满足一定百分比之后才能开始回放。参数小于等于1时是百分比,大于1时是kbit | 默认0.9 |
f_ip_factor | float | 设置平均I帧QP相比P帧QP的差值 | 更高的值意味着更高的I帧质量。ipratio与I帧QP成反比例关系。等于1的时候,I帧QP与P帧相同。 |
f_pb_factor | float | 设置平均B帧QP相比P帧QP的差值 | 更高的值意味着更低的B帧质量。pbratio与B帧QP成正比例关系。等于1的时候,B帧QP与P帧相同。 |
b_filler | int | CBR模式下,码率不够,强行添加填充位,凑码率。 | |
i_aq_mode | int | 自适应量化参数。 空域AQ功能 | X264_AQ_NONE:不开启AQ模式,帧内宏块全部使用同一QP或者固定的QP表。该模式下,视频PSNR值相对于其他码控模式偏高。 X264_AQ_VARIANCE:使用方差动态计算每个宏块的QP。 |
f_aq_strength | float | 自适应量化强度。减少平坦区域块效应和纹理区域模糊效应的强度。 | 强度越高,高频信息消减越多,应对平坦区域的块效益就越好,但是对于纹理区域的模糊就越大。一般来说画面动态较高就选低点的aq-strength(0.6-0.8),以免在平坦区域浪费太多码率,而损伤了动态区域;在静态画面较多的场景就选高点aq-strength(>=1.0),防止暗部因比特不够而产生色带。 |
b_mb_tree | int | 是否开启基于macroblock的qp控制方法,开启之后质量有所提升 时域AQ功能 | macroblock tree工作原理:决定MB使用何种大小的qp值进行量化。对每个MB处理,向前预测一定数量的帧,记录该MB被参考的情况,qp的大小与被参考次数成反比。 |
i_lookahead | int | rc-lookahead决定mb_tree向前预测的帧数 | 配置该参数后,编码器并不是每来一帧就编码一帧,而是先缓存i_lookahead个帧,将i_lookahead个帧缓存满后再开始出编码。该参数的设置会影响压缩的效果,同时调大该参数也能够使得VBV获得更精确的码率控制,但同时也会增加编码的时间,提高实时编码的时延。 |
b_stat_write | int | 1pass时,是否将统计数据写入到文件psz_stat_out中 | |
*psz_stat_out | char | 1pass统计数据写入文件名 | |
b_stat_read | int | 2pass时,是否从文件psz_stat_in中读入统计数据 | |
*psz_stat_in | char | 2pass读取统计数据文件名 | |
f_qcompress | float | 线性量化控制 | 0.0:固定码率 1.0:固定量化值 |
f_qblur | float | 时间上模糊量化,减少QP的波动(after curve compression)。对统计文件结果平滑量化值比例的最大值 | 范围0~99.9,默认0.5。只用于2-pass |
f_complexity_blur | float | 时间上模糊复杂性,减少QP的波动(before curve compression)。根据相邻帧平滑量化值比例的最大值 | 范围0~99.0,默认20.0,只用于2-pass和质量模式 |
*zones | x264_zone_t | 码率控制覆盖 | |
i_zones | int | number of zone_t's | |
*psz_zones | char | 指定区的另一种码控方法 |