【x264】x264编码器参数配置


参考:http://t.csdnimg.cn/0OuUp

1.默认配置

x264的参数配置位于base.c中,默认参数的配置使用REALIGN_STACK void x264_param_default(x264_param_t* param)

1.1 CPU检测配置

参数名称作用默认值
cpu检测CPU使用情况x264_cpu_detect
i_threads线程数量X264_THREADS_AUTO (default=0)
i_lookahead_threads前向预测线程 数量X264_THREADS_AUTO
b_deterministic是否允许非确定性时线程优化1
i_sync_lookahead前向参考帧数。用于配置线程预测的帧缓存大小X264_SYNC_LOOKAHEAD_AUTO

1.2 视频参数配置

参数名称作用默认值
i_csp色彩空间参数 ,X264只支持I420
i_width图片宽0
i_height图片高0
vui.i_sar_width样本宽高比的宽度0
vui.i_sar_height样本宽高比的高度0
vui.i_overscan扫描0 (default)
0=undef
1=no overscan
2=overscan 过扫描线
可选项:show(观看)/crop(去除))
vui.i_vidformat视频格式0 (default) “undef” = 0
component/pal/ntsc/secam/mac/undef*/)
vui.b_fullrange是否是全域格式,影响图像感官差异-1
vui.i_colorprim原始色度格式2 (default=“undef”)
可选项:undef/bt709/bt470m/bt470bg
smpte170m/smpte240m/film
vui.i_transfer转换方式2 (default=“undef”)
可选项:undef/bt709/bt470m/bt470bg/linear
log100/log316/smpte170m/smpte240m)
vui.i_colmatrix色度矩阵设置-1 (default=“undef”)
undef/bt709/fcc/bt470bg
smpte170m/smpte240m/GBR/YCgCo)
vui.i_chroma_locboth top & bottom色度样本指定0 (范围0~5)
i_fps_numfps的分子25
i_fps_denfps的分母1
i_level_idclevel的设置,该配置影响视频的码率、分辨率和帧率等参数的限制-1
i_slice_max_size每个slice最大的大小0
i_slice_max_mbs每个slice最大的宏块数量0
i_slice_count每帧的slice数目0
i_bitdepth位深8 (可配置为10)

1.3 编码器参数

参数名称作用默认值
i_frame_reference参考帧个数3(最大为16)
i_keyint_max最大IDR帧间隔250
i_keyint_min最小IDR帧间隔X264_KEYINT_MIN_AUTO (0)
i_bframe位于I帧和P帧之间的B帧数量3
i_scenecut_threshold场景切换的判断阈值40
i_bframe_adaptive自适应B帧策略,决定使用P帧还是B帧X264_B_ADAPT_FAST (default=1,快速算法)
X264_B_ADAPT_NONE(0,总是使用B帧)
X264_B_ADAPT_TRELLIS(2,最佳算法)
i_bframe_biasB帧插入倾向0(不推荐修改)
i_bframe_pyramid是否允许将B帧作为参考帧X264_B_PYRAMID_NORMAL(default=2,随意使用)
X264_B_PYRAMID_STRICT(1,gop内使用一个B参考帧,蓝光编码)
X264_B_PYRAMID_NONE(0,不允许使用B帧作为参考帧)
b_interlaced是否进行隔行扫描0
b_constrained_intra开启SVC编码的底层要求的强制帧内预测0
b_deblocking_filter是否打开去块滤波器1
i_deblocking_filter_alphac0alpha去块滤波器0(-6~6,值越大越强)
i_deblocking_filter_betabeta去块滤波器0(取值范围 -6 ~ 6 数字越大效果越强)
b_cabac是否使用CABAC1
i_cabac_init_idc给出算术编码初始化时表格的选择0(0~2)
rc.i_rc_method码率控制策略,默认配置为CRFX264_RC_CRF(1,恒定质量编码,即运动/纹理复杂场景,码率上升;静态/纹理简单的画面,码率下降)
X264_RC_CQP(0,固定QP,码率不可控)
X264_RC_ABR(2,编码出来的视频码率在一个恒定值左右波动,该模式下目标码率和峰值码率配置相等的时候,就是CBR)
rc.i_bitrate目标码率0
rc.f_rate_toleranceABR码控模式下,瞬时码率可以偏离的倍数1.0(0.1~100)
rc.f_vbv_max_bitrateABR码控模式下,瞬时峰值码率,单位kbps0
rc.i_vbv_buffer_size码率控制缓冲区的大小0 (控制码率收敛到目标码率的时间)
rc.f_vbv_buffer_init码率控制缓冲区数据满足一定百分比之后才能开始回放0.9
(参数小于等于1时是百分比,大于1时是kbit)
rc.i_qp_constant固定量化因子-1
(在CQP模式下配置有效)
rc.f_rf_constant实际图像质量23
(X264_RC_CRF模式下有效)
rc.i_qp_minqp最小值0
rc.i_qp_maxqp最大值INT_MAX
rc.i_qp_step量化步长4
rc.f_ip_factor设置平均I帧QP相比P帧QP的差值1.4
更高的值意味着更高的I帧质量
ipratio与I帧QP成反比例关系
等于1的时候,I帧QP与P帧相同
rc.f_pb_factor设置平均B帧QP相比P帧QP的差值1.3
更高的值意味着更低的B帧质量
pbratio与B帧QP成正比例关系
等于1的时候,B帧QP与P帧相同
rc.i_aq_mode自适应量化参数
(adaptive qp)
X264_AQ_VARIANCE (default=1)
使用方差动态计算每个宏块的QP
X264_AQ_NONE(0)
不开启AQ模式,帧内宏块全部使用同一QP或者固定的QP表。该模式下,视频PSNR值相对于其他码控模式偏高
X264_AQ_AUTOVARIANCE
方差自适应模式,先遍历全部宏块,统计出一些中间参数,利用这些参数,对每个宏块计算QP
X264_AQ_AUTOVARIANCE_BIASED
偏移方差自适应模式,在该模式下BiasStrength即为原始的Strength值。最终每个宏块的 QP
rc.f_aq_strength自适应量化强度1.0 (强度越高,高频信息减少越多)
rc.i_lookaheadmb_tree向前预测的帧数40
rc.b_stat_write1pass时,是否将统计数据写入到文件psz_stat_out中0
rc.psz_stat_out1pass统计数据写入文件名“x264_2pass.log”
rc.b_stat_read2pass时,是否从文件psz_stat_in中读入统计数据0
rc.psz_stat_in2pass读取统计数据文件名“x264_2pass.log”
rc.f_qcompress线性量化控制0.6
0.0:固定码率
1.0:固定量化值
rc.f_qblur时间上模糊量化,减少QP的波动,
对统计文件结果平滑量化值比例的最大值
0.5
范围0~99.9,默认0.5。只用于2-pass
rc.f_complexity_blur时间上模糊复杂性,减少QP的波动,
根据相邻帧平滑量化值比例的最大值
20
范围0~99.0,默认20.0,只用于2-pass和质量模式
rc.i_zonesnumber of zone_t’s0
rc.b_mb_tree宏块级码率控制1
对每个MB处理,向前预测一定数量的帧,记录该MB被参考的情况,qp的大小与被参考次数成反比

1.4 日志

参数名称作用默认值
pf_log日志x264_log_default
p_log_privateNULL
i_log_level日志级别X264_LOG_INFO
默认是INFO级别

1.5 分析模块

参数名称作用默认值
analyse.intra帧内预测X264_ANALYSE_I4x4 or
X264_ANALYSE_I8x8
analyse.inter帧间预测X264_ANALYSE_I4x4 or
X264_ANALYSE_I8x8 or
X264_ANALYSE_PSUB16x16 or
X264_ANALYSE_BSUB16x16
analyse.i_direct_mv_pred时间空间队运动预测X264_DIRECT_PRED_SPATIAL(1)
analyse.i_me_method运动估计搜索方法X264_ME_HEX(1)
analyse.f_psy_rdPsy RD强度1.0
analyse.b_psy是否使用psy算法1
analyse.f_psy_trellisPsy Trellis强度0
analyse.i_me_range运动估计搜索范围16
analyse.i_subpel_refine亚像素运动估计质量7
analyse.b_mixed_references允许每个宏块的分区在P帧有它自己的参考号1
analyse.b_chroma_me允许chroma进行运动估计1
analyse.i_mv_range_thread线程之间的最小空间-1
analyse.i_mv_range运动矢量最大长度-1
analyse.i_chroma_qp_offsetchroma的qp偏移量0
analyse.b_fast_pskip是否快速P帧跳过检测1
analyse.b_weighted_bipred允许B帧隐式加权1
analyse.i_weighted_predP帧权重X264_WEIGHTP_SMART(2)
analyse.b_dct_decimate允许P帧变换系数1
analyse.b_transform_8x8允许进行8x8变换1
analyse.i_trellis允许使用trellis编码1
(0=关闭,1=最后编码时使用
2=在所有模式决策上启用)
analyse.i_luma_deadzone[0]帧内模式下亮度量化的盲区大小21
analyse.i_luma_deadzone[1]帧间模式下亮度量化的盲区大小11
analyse.b_psnr允许使用psnr0
analyse.b_ssim允许使用ssim0

1.6 其余配置

参数名称作用默认值
b_repeat_headers重复SPS/PPS 放到关键帧前面1
b_annexb允许输出码流格式为Annex B Byte stream1
b_aud生成访问单元分隔符0
b_vfr_inputvfr输入1
1:时间基和时间戳用于码控
0:仅帧率用于码率控制
i_nal_hrd允许使用HRDX264_NAL_HRD_NONE
b_tff
b_pic_struct允许在Picture Timing SEI传送pic_struct0
b_fake_interlaced将视频流标记为交错(隔行)0
i_frame_packing-1
i_alternative_transfer2
b_opencl0
i_opencl_device0
opencl_device_idNULL
psz_clbin_fileNULL
i_avcintra_class0
i_avcintra_flavorX264_AVCINTRA_
FLAVOR_PANASONIC

2.档位配置

x264当中的档位包括:“ultrafast”, “superfast”, “veryfast”, “faster”, “fast”, “medium”, “slow”, “slower”, “veryslow”, “placebo”,从左到右速度依次减慢,视频编码的质量逐渐增加。档位的调整位于base.c中的
static int param_apply_preset( x264_param_t *param, const char *preset )

2.1 ultrafast

参数名称配置值
i_frame_reference1
i_scenecut_threshold0
b_deblocking_filter0
b_cabac0
i_bframe0
analyse.intra0
analyse.inter0
analyse.b_transform_8x80
analyse.i_me_methodX264_ME_DIA
analyse.i_subpel_refine0
rc.i_aq_mode0
analyse.b_mixed_references0
analyse.i_trellis0
i_bframe_adaptiveX264_B_ADAPT_NONE
rc.b_mb_tree0
analyse.i_weighted_predX264_WEIGHTP_NONE
analyse.b_weighted_bipred0
rc.i_lookahead0

2.2 superfast

参数名称配置值
analyse.interX264_ANALYSE_I8x8 or
X264_ANALYSE_I4x4
analyse.i_me_methodX264_ME_DIA
analyse.i_subpel_refine1
i_frame_reference1
analyse.b_mixed_references0
analyse.i_trellis0
rc.b_mb_tree0
analyse.i_weighted_predX264_WEIGHTP_SIMPLE
rc.i_lookahead0

2.3 veryfast

参数名称配置值
analyse.i_subpel_refine2
i_frame_reference1
analyse.b_mixed_references0
analyse.i_trellis0
analyse.i_weighted_predX264_WEIGHTP_SIMPLE
rc.i_lookahead10

2.4 faster

参数名称配置值
analyse.b_mixed_references0
i_frame_reference2
analyse.i_subpel_refine4
analyse.i_weighted_predX264_WEIGHTP_SIMPLE
rc.i_lookahead20

2.5 fast

参数名称配置值
i_frame_reference2
analyse.i_subpel_refine6
analyse.i_weighted_predX264_WEIGHTP_SIMPLE
rc.i_lookahead30

2.6 medium

默认配置就是 medium

2.7 slow

参数名称配置值
analyse.i_subpel_refine8
i_frame_reference5
analyse.i_direct_mv_predX264_DIRECT_PRED_AUTO
analyse.i_trellis2
rc.i_lookahead50

2.8 slower

参数名称配置值
analyse.i_me_methodX264_ME_UMH
analyse.i_subpel_refine9
i_frame_reference8
i_bframe_adaptiveX264_B_ADAPT_TRELLIS
analyse.i_direct_mv_predX264_DIRECT_PRED_AUTO
analyse.interanalyse.inter or
X264_ANALYSE_PSUB8x8
analyse.i_trellis2
rc.i_lookahead60

2.9 veryslow

参数名称配置值
analyse.i_me_methodX264_ME_UMH
analyse.i_subpel_refine10
analyse.i_me_range24
i_frame_reference16
i_bframe_adaptiveX264_B_ADAPT_TRELLIS
analyse.i_direct_mv_predX264_DIRECT_PRED_AUTO
analyse.interanalyse.inter or
X264_ANALYSE_PSUB8x8
analyse.i_trellis2
analyse.i_bframe8
rc.i_lookahead60

2.10 placebo

参数名称配置值
analyse.i_me_methodX264_ME_TESA
analyse.i_subpel_refine11
analyse.i_me_range24
i_frame_reference16
i_bframe_adaptiveX264_B_ADAPT_TRELLIS
analyse.i_direct_mv_predX264_DIRECT_PRED_AUTO
analyse.interanalyse.inter or
X264_ANALYSE_PSUB8x8
analyse.b_fast_pskip0
analyse.i_trellis2
analyse.i_bframe16
rc.i_lookahead60

3.优化配置

优化配置是针对不同的场景进行优化,主要包括去块滤波、psy和aq模式的调整

3.1 film

参数名称配置值
i_deblocking_filter_alphac0-1
i_deblocking_filter_beta-1
analyse.f_psy_trellis0.15

3.2 animation

参数名称配置值
i_frame_referenceparam->i_frame_reference > 1 ? param->i_frame_reference*2 : 1
i_deblocking_filter_alphac01
i_deblocking_filter_beta1
analyse.f_psy_rd0.4
rc.f_aq_strength0.6
i_bframei_bframe + 2

3.3 grain

参数名称配置值
i_deblocking_filter_alphac0-2
i_deblocking_filter_beta-2
analyse.f_psy_trellis0.25
analyse.b_dct_decimate0
rc.f_pb_factor1.1
rc.f_ip_factor1.1
rc.f_aq_strength0.5
analyse.i_luma_deadzone[0]6
analyse.i_luma_deadzone[1]6
rc.f_qcompress0.8

3.4 stillimage

参数名称配置值
i_deblocking_filter_alphac0-3
i_deblocking_filter_beta-3
analyse.f_psy_rd2.0
analyse.f_psy_trellis0.7
rc.f_aq_strength1.2

3.5 psnr

参数名称配置值
rc.i_aq_modeX264_AQ_NONE
analyse.b_psy0

3.6 ssim

参数名称配置值
rc.i_aq_modeX264_AQ_AUTOVARIANCE
analyse.b_psy0

3.7 fastdecode

参数名称配置值
b_deblocking_filter0
b_cabac0
analyse.b_weighted_bipred0
analyse.i_weighted_predX264_WEIGHTP_NONE

3.8 zerolatency

参数名称配置值
rc.i_lookahead0
i_sync_lookahead0
i_bframe0
b_sliced_threads1
b_vfr_input0
rc.b_mb_tree0

3.9 touhu

参数名称配置值
i_frame_referenceparam->i_frame_reference > 1 ? param->i_frame_reference*2 : 1
i_deblocking_filter_alphac0-1
i_deblocking_filter_beta-1
analyse.f_psy_trellis0.2
rc.f_aq_strength1.3
analyse.interanalyse.inter or
X264_ANALYSE_PSUB8x8

4.小结

x264当中设计了丰富的编码工具,从而实现高效的视频编解码,为了灵活的使用这些工具,所以设置了不同的档位,以适应不同的应用场景。对于复杂的场景,为了保证编码速度,可以使用较快速的档位;对于简单的场景,因为编码速度很快,因此可以使用更多的编码工具,实现更高质量的编码,因而速度较慢。对于需要实时的场景(如会议场景),可以使用参数如 zerolatency 来保证其编码的效率。另外,对于RTC场景,不同档位和不同优化策略之间可以灵活切换,以适应实时且变化的场景。具体使用何种档位和策略,需要根据实际应用场景确定。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值