x264编码参数详细介绍:profile、preset、tune

说明

  1. 下载:https://www.videolan.org/developers/x264.html
  2. 一款遵循h264标准的开源视频编码器;
  3. ​x264编码器全部参数的集合可以参考:https://blog.csdn.net/yanceyxin/article/details/131726940
  4. cpu、Video properties模块的参数详细介绍可参考:https://blog.csdn.net/yanceyxin/article/details/131747902?spm=1001.2014.3001.5501
  5. Encoder等参数集具体详细介绍可以参考:https://blog.csdn.net/yanceyxin/article/details/131749954?spm=1001.2014.3001.5501

具体参数介绍

profile

支持特定的编码功能,每个profile都规定了一个算法特征和限制的子集,任何遵守某个profile的解码器都应该支持与其相应的子集;

名称 参数集
baseline/PROFILE_BASELINE param->analyse.b_transform_8x8=0;
param->b_cabac=0;
param->i_cqm_preset=X264_CQM_FLAT;
param->psz_cqm_file=NULL;
param->i_bframe=0;
param->analyse.i_weighted_pred=X264_WEIGHTP_NONE;
main/PROFILE_MAIN param->analyse.b_transform_8x8=0;
param->i_cqm_preset=X264_CQM_FLAT;
param->psz_cqm_file=NULL;
high/PROFILE_HIGH 默认的参数设置就是high级别
high10/PROFILE_HIGH10 x264目前实际不支持
high422/PROFILE_HIGH422 x264目前实际不支持
high444/PROFILE_HIGH444_PREDICTIVE x264目前实际不支持

x264编码参数详细介绍:profile、preset、tune_第1张图片
H264中关于profile的IDC解释:
x264编码参数详细介绍:profile、preset、tune_第2张图片
苹果设备对不同profile的支持:
x264编码参数详细介绍:profile、preset、tune_第3张图片

level

 每个level都规定了一组对标准中语法成员(syntax element)所采用的各种参数值的限制;在给定的profile下,level通常与解码器的处理能力和内存容量相对应,每一个档次设置不同的参数(取样速率、图像尺寸、编码比特率等),得到对应的编解码器性能的不同level;
 如无特别需要,尽量让level处于4.1以下;
 缺省状态是 -1,取值范围如下表;
 使用方法:
  param->i_level_idc=-1; //代码版
  --level 4.1 //命令行版
x264编码参数详细介绍:profile、preset、tune_第4张图片
  H264标准中关于level的IDC的解释:
x264编码参数详细介绍:profile、preset、tune_第5张图片

preset

一组编码参数的组合使用,preset作为x264最重要的参数,主要调节编码速度和质量的平衡,有10个等级;

名称 参数集
ultrafast //极快(最快) param->i_frame_reference=1;
param->i_scenecut_threshold=0;
param->b_deblocking_filter=0;
param->b_cabac=0;
param->i_bframe=0;
param->analyse.intra=0;
param->analyse.inter=0;
param->analyse.b_transform_8x8=0;
param->analyse.i_me_method=X264_ME_DIA;
param->analyse.i_subpel_refine=0;
param->rc.i_aq_mode=0;
param->analyse.b_mixed_references=0;
param->analyse.i_trellis=0;
param->i_bframe_adaptive=X264_B_ADAPT_NONE;
param->rc.b_mb_tree=0;
param->analyse.i_weighted_pred=X264_WEIGHTP_NONE;
param->analyse.b_weighted_bipred=0;
param->rc.i_lookahead=0;
superfast//超级快 param->analyse.inter=X264_ANALYSE_I8x8|X264_ANALYSE_I4x4;
param->analyse.i_me_method=X264_ME_DIA;
param->analyse.i_subpel_refine=1;
param->i_frame_reference=1;
param->analyse.b_mixed_references=0;
param->analyse.i_trellis=0;
param->rc.b_mb_tree=0;
param->analyse.i_weighted_pred=X264_WEIGHTP_SIMPLE;
param->rc.i_lookahead=0;
veryfast//非常快 param->analyse.i_subpel_refine=2;
param->i_frame_reference=1;
param->analyse.b_mixed_references=0;
param->analyse.i_trellis=0;
param->analyse.i_weighted_pred=X264_WEIGHTP_SIMPLE;
param->rc.i_lookahead=10;
faster//很快 param->analyse.b_mixed_references=0;
param->i_frame_reference=2;
param->analyse.i_subpel_refine=4;
param->analyse.i_weighted_pred=X264_WEIGHTP_SIMPLE;
param->rc.i_lookahead=20;
fast//快 param->i_frame_reference=2;
param->analyse.i_subpel_refine=6;
param->analyse.i_weighted_pred=X264_WEIGHTP_SIMPLE;
param->rc.i_lookahead=30;
medium//正常 /* Default is medium */
slow //慢 param->analyse.i_subpel_refine=8;
param->i_frame_reference=5;
param->analyse.i_direct_mv_pred=X264_DIRECT_PRED_AUTO;
param->analyse.i_trellis=2;
param->rc.i_lookahead=50;
slower //很慢 param->analyse.i_me_method=X264_ME_UMH;
param->analyse.i_subpel_refine=9;
param->i_frame_reference=8;
param->i_bframe_adaptive=X264_B_ADAPT_TRELLIS;
param->analyse.i_direct_mv_pred=X264_DIRECT_PRED_AUTO;
param->analyse.inter
veryslow //非常慢 param->analyse.i_me_method=X264_ME_UMH;
param->analyse.i_subpel_refine=10;
param->analyse.i_me_range=24;
param->i_frame_reference=16;
param->i_bframe_adaptive=X264_B_ADAPT_TRELLIS;
param->analyse.i_direct_mv_pred=X264_DIRECT_PRED_AUTO;
param->analyse.inter
placebo //极慢 param->analyse.i_me_method=X264_ME_TESA;
param->analyse.i_subpel_refine=11;
param->analyse.i_me_range=24;
param->i_frame_reference=16;
param->i_bframe_adaptive=X264_B_ADAPT_TRELLIS;
param->analyse.i_direct_mv_pred=X264_DIRECT_PRED_AUTO;
param->analyse.inter |=X264_ANALYSE_PSUB8x8;
param->analyse.b_fast_pskip=0;
param->analyse.i_trellis=2;
param->i_bframe=16;
param->rc.i_lookahead=60;

各个 preset参数组合:
x264编码参数详细介绍:profile、preset、tune_第6张图片

各个 preset 下码率、质量、编码耗时对比:
x264编码参数详细介绍:profile、preset、tune_第7张图片

CRF 码率控制模式下各个 preset的编码耗时、码率、质量对比:
x264编码参数详细介绍:profile、preset、tune_第8张图片
x264编码参数详细介绍:profile、preset、tune_第9张图片
x264编码参数详细介绍:profile、preset、tune_第10张图片

tune

  一组编码参数的组合使用,重要性仅次于preset的参数,主要配合视频类型和视觉优化的参数,可以理解为视频偏好;如果视频的内容复合其中一个可用的调整值又或又其中的需要,则可以使用此选项,否则建议不适用。

名称 参数集
film:电影、真人类型 param->i_deblocking_filter_alphac0=-1;
param->i_deblocking_filter_beta=-1;
param->analyse.f_psy_trellis=0.15;
animation:动画 param->i_frame_reference=param->i_frame_reference>1?param->i_frame_reference*2:1;
param->i_deblocking_filter_alphac0=1;
param->i_deblocking_filter_beta=1;
param->analyse.f_psy_rd=0.4;
param->rc.f_aq_strength=0.6;
param->i_bframe+=2;
grain:需要保留大量的gain时使用,颗粒感,噪点 param->i_deblocking_filter_alphac0=-2;
param->i_deblocking_filter_beta=-2;
param->analyse.f_psy_trellis = 0.25;
param->analyse.b_dct_decimate=0;
param->rc.f_pb_factor=1.1;
param->rc.f_ip_factor=1.1;
param->rc.f_aq_strength=0.5;
param->analyse.i_luma_deadzone[0] =6;
param->analyse.i_luma_deadzone[1] =6;
param->rc.f_qcompress=0.8;
stillimage:静态图像编码时使用 param->i_deblocking_filter_alphac0=-3;
param->i_deblocking_filter_beta=-3;
param->analyse.f_psy_rd=2.0;
param->analyse.f_psy_trellis=0.7;
param->rc.f_aq_strength=1.2;
psnr:为提高psnr做了优化的参数 param->rc.i_aq_mode = X264_AQ_NONE;
param->analyse.b_psy=0;
ssim:为提高ssim做了优化的参数 param->rc.i_aq_mode=X264_AQ_AUTOVARIANCE;
param->analyse.b_psy=0;
fastdecode:可以快速解码的参数 param->b_deblocking_filter=0;
param->b_cabac=0;
param->analyse.b_weighted_bipred=0;
param->analyse.i_weighted_pred=X264_WEIGHTP_NONE;
zerolatency:零延迟,牺牲视频质量较少延迟,比如视频会议 param->rc.i_lookahead=0;
param->i_sync_lookahead=0;
param->i_bframe=0;
param->b_sliced_threads=1;
param->b_vfr_input=0;
param->rc.b_mb_tree=0;
touhou:东方弹幕游戏录像 param->i_frame_reference=param->i_frame_reference>1?param->i_frame_reference*2:1;
param->i_deblocking_filter_alphac0=-1;
param->i_deblocking_filter_beta=-1;
param->analyse.f_psy_trellis=0.2;
param->rc.f_aq_strength=1.3;
if( param->analyse.inter&X264_ANALYSE_PSUB16x16 ){ param->analyse.inter |=X264_ANALYSE_PSUB8x8;}

码率控制方式

X264_RC_CQP(固定量化值)

解释
没有缺省值,一旦设置就表示要按照相应的码率控制进行编码;
使用qp模式,即固定量化值 ,意味着停用弹性量化(aq_mode);
qp设置为 0 的时候,意味着无损编码;
用法
param->rc.i_qp_constant = -1; param->rc.i_rc_method=X264_RC_CQP;//代码版
–qp 28 //命令行版

X264_RC_CRF(固定码率因子)

解释
固定位元率系数,Constant Ratefactor,缺省值是23,也是x264默认使用的码率控制方式;
可用的值从1~51,越小编码质量越好,码率越高,一般使用18~28,可以为浮点;此模式把某个“质量”作为编码目标,根据骗子质量自动分配码率的vbr(Variable Bit Rate动态比特率);x264中构想是让【crf n】提供与【qp n】相当的视觉品质,但编码文件更小一些;crf是借助降低“较不重要”帧的品质来达到此目的,在此情况下,“较不重要”是指在复杂或者高动态场景的帧,其品质不是很耗费位元数就是不易察觉,所以会提高它们的量化值,从这些帧里所节省下来的位元数被重新分配到可以更有效利用的帧;
CRF 模式的唯一负面影响是不知道输出文件的大小,也不知道码率的波动情况如何;因此一般在直播应用
当crf = 0时,与qp=0 一样,实现无损编码;
crf+6,比特率减半;crf-6,比特率翻倍;crf-1,比特率增加10%左右,crf+1,比特率减少10%左右;
此外还有f_rf_constant_max(crf-max)配合使用;
用法
param->rc.i_rc_method=X264_RC_CRF; param->rc.f_rf_constant=23;//代码版
–crf 25//命令行版

X264_RC_ABR(平均码率控制)

解释
没有缺省值,x264尝试把给定的位元率作为整体平均值来编码,这意味着最终编码文件的大小是已知的,但最终的品质未知,此选项通常与-pass(两阶段编码)一起使用;
x264开发者不推荐使用这种模式,因为编码器也无法准确知道后面的视频内容是什么;所以必须靠猜来达到目标码率,因此会引起质量波动;这不是一种固定码率模式!尽管 ABR 从技术上来说是一种 VBR 模式,但它并不比指定某个固定码率好多少,因为输出稳定画质的可靠性实在不行;
FFmpeg中设置bitrate的具体参数为bit_rate,单位是bits/s;(x264里面对应参数i_bitrate的单位则是kbits/s,1kbits为1000bits而非1024bits)
用法
param->rc.i_bitrate = 2000; param->rc.i_rc_method=X264_RC_ABR; //代码版,单位是kbit/s
—bitrate 2000 //命令行版本

x264编码参数详细介绍:profile、preset、tune_第11张图片

参考

https://www.lighterra.com/papers/videoencodingh264/
https://blog.csdn.net/CSqingchen/article/details/106492496
https://aijishu.com/a/1060000000079293
https://blog.csdn.net/CrystalShaw/article/details/89572684?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2
https://www.itu.int/rec/T-REC-H/en //官方文档链接
https://en.wikipedia.org/wiki/AVC-Intra
https://www.cnblogs.com/wangnath/
https://www.cnblogs.com/jogh/p/4967070.html
https://www.cnblogs.com/wangnath/p/15057854.html
https://www.cnblogs.com/wangnath/p/15057885.html
https://blog.csdn.net/chinabinlang/article/details/78181110

你可能感兴趣的:(H264标准,x264,视频编解码,编码参数,实时音视频,H264)