翻译自:http://mewiki.project357.com/wiki/X264_Settings,水平有限,勿吝指教。
第一部分:http://blog.yikuyiku.com/?p=2029
分析
partitions
默认:’p8x8,b8x8,i8x8,i4x4′
说明:H.264在压缩前会被切分为16×16大小的宏块。这些块可被进一步切分成更小的块,利用此参数,可以控制不同的帧类型(I、P、B)开启更细的帧切分(8×8、4×4),具体参数如下:
I帧:i8x8、i4x4;
P帧:p8x8(会同时开启p16x8和p8x16)、p4x4(会同时开启p8x4和p4x8);
B帧:b8x8(会同时开启b18x8和b8x16);
另外,也可以设置为’none’和’all’。一般而言,开启p4x4不会带来多少的质量提升,而且它极其耗时,是个性价比比较低的选项。
参见:–no-8x8dct
direct
默认:’spatial’
说明:为’direct’类型的运动矢量设定预测模式。有两种可选的模式:spatial(空间预测)和temporal(时间预测)。可以设置为’none’关闭预测,也可以设置为’auto’让x264去选择它认为更好的模式,x264会在编码结束时告诉你它的选择。’auto’最好在2趟编码中使用,但也可以在1趟编码时使用。如果用于2趟编码,x264会在第1趟编吗时同时尝试2种预测模式,然后在第2趟编码时使用它认为较好的那一个。注意,如果第1趟编码时选择了’auto’,那么第2趟编码时也必须设置为’auto’。不然,第2趟编码会使用’temporal’。本选项从不会浪费比特,强烈推荐使用。
建议:’auto’
no-weightb
默认:无
说明:H.264允许给可参考B帧加上影响预测图像的权重,此选项会关闭此特性。
建议:保持默认
weightp
默认:2
说明:开启明确的权重预测以增进P帧压缩。越高级的模式越耗时,有以下模式:
0 —— 关闭
1 —— 静态补偿(永远为-1)
2 —— 智能统计静态帧,特别为增进淡入淡出效果的压缩率而设计。
注意:为Adobe Flash(版本低于10.1)编码时请把此值设为0,会导致解码时出现错误。Flash 10.1时此BUG得到修正。
me
默认:’hex’
说明:设置全局的运动预测方法,有以下5种选择:
dia(四边形搜索) —— 最简单的搜索,从最乐观的情况开始预测,在运动矢量的上下左右分别偏移一个像素对比,选择其中最好的,循环直至找不到更匹配的运动矢量。
hex(六边形搜索) —— 和菱形差不多的策略,不同的是,它在6边形的6个顶点上进行rang-2的搜索,它实现了比dia有效率地多的搜索而几乎不会使用更多的耗时,它是普通编码任务一个很好的选择。
umh(不均匀的多六边形搜索) —— 显著地比hex要慢,但它尝试进行复杂多六边形的搜索,以避免错过那些难以找到的运动矢量。与hex和dia不同的是,merange参数直接任意大小控制umh的搜索半径。
esa(全局搜索) —— 高度优化的全局智能搜索,在最佳预测器的merange范围内进行运动搜索。在全局面进行运动向量的算术对比,虽然计算过程并不慢,但好事仍比umh有显著提升,而且并不会带来太多质量方面的提升。所以,对于日常的编码任务来说,它不是特别有用。
tesa(变换全局搜索) —— 使用一种算法,效果近于对全局的每个运动矢量进行Hadamard 变换比对。搜索方式上和esa很像,但是效果比esa好一点点,耗时也多一点点。
参见:–merange
merange
默认:16
说明:merange控制运动搜索的最大像素范围。对于hex和dia,范围被控制在4-16像素,默认就是16。对于umh和esa,可以超过默认的16像素进行大范围的运行搜索,这对高分辨率视频和快速运动视频而言很有用。注意,对于umh、esa、tesa,增大merange会显著地增加编码耗时。
参见:–me
mvrange
默认:-1(自动)
说明:设置垂直的运动矢量最大像素值。默认值如下:
level 1/1b —— 64
level 1.1-2.0 —— 128
level 2.1-3.0 —— 256
level 3.1+ —— 512
注意:如果打算手动设置此值,要在上面给出的值的基础上减去0.25(如:–mvrange 127.75),
建议:保持默认
mvrange-thread
默认:-1(自动)
说明:设置线程间运动矢量的缓冲区大小的最小值。不要碰这个选项。
建议:保持默认
subme
默认:7
说明:设置亚像素估计的复杂度。值越高越好。级别1-5简单控制亚像素的细化力度。级别6给模式决策开启RDO(码率失真优化模式),级别8给运动矢量和帧内预测模式开启RDO。开启RDO会显著增加耗时。
使用小于2的值会开启一个快速的、低质量的预测模式,效果如同设置了一个很小的 –scenecut值。不推荐这样设置。
可使用的值如下:
0 —— fullpel only
1 —— QPel SAD 1 iteration
2 —— QPel SATD 2 iterations
3 —— HPel on MB then QPel
4 —— Always QPel
5 —— Multi QPel + bi-directional motion estimation
6 —— RD on I/P frames
7 —— RD on all frames
8 —— RD refinement on I/P frames
9 —— RD refinement on all frames
10 —— QP-RD (requires –trellis=2, –aq-mode > 0)
建议:保持默认,或设置为更高,除非对速度十分敏感。
subq
–subme的别名
psy-rd
默认:1.0:0.0
说明:第1个数字是psy-RDO的强度(subme大于等于6时激活)。第2个数字是Psy-Trellis的强度(subme大于等于1时激活)。注意Trellis的特性仍是’实验性’的,至少对于动画视频来说,它总是会坏事的。
关于psy-rd的更详尽解释可以参见doom9的这篇文章:http://forum.doom9.org/showthread.php?t=138293。
no-psy
默认:无
说明:关闭全部为了心理视觉而降低psnr或ssim的优化。此选项同时也会关闭一些不能通过x264命令行设置的内部的心理视觉优化方法。
建议:保持默认
no-mixed-refs
默认:无
说明:Mixed refs(混合参照)会以8×8的切块为参照取代以整个宏块为参照。会增进多帧参照的帧的质量,会有一些时间耗用。此选项将禁用这个特性。
建议:保持默认
参见:–ref
no-chroma-me
默认:无
说明:通常运动估计都会同时考虑亮度和色度因素。开启此选项将会忽略色度因素换取一些速度的提升。
建议:保持默认
no-8x8dct
默认:无
说明:自适应的8×8 DCT会在I帧中开启更智能的自适应8×8的时域变换。开启此选项可以禁用这个特性。(译者按:此选项是将H.264的Profile从High降为Main的重要参数)
建议:保持默认
trellis
默认:1
说明:使用网格编码量化以增进编码效率:
0 —— 关闭
1 —— 仅在宏块最终编码时启用
2 —— 所有模式下均启用
选项1提供了速度和效率间较好的均衡,选项2大幅降低速度。
关于网格编码量化的更详尽解释可以参见:http://en.wikipedia.org/wiki/Trellis_quantization。
建议:保持默认
注意:需要开启 –cabac选项生效
no-fast-pskip
默认:无
说明:关闭P帧的早期跳过决策。大量的时耗换回非常小的质量提升。
建议:保持默认
no-dct-decimate
默认:无
说明:DCT抽样会丢弃看上去“多余”的DCT块。会增加编码效率,通常质量损失可以忽略。此选项关闭此特性。
建议:保持默认
nr
默认:无
说明:执行快速去噪。以此值为阈值确定噪音,通过在量化前丢失小细节的方式尝试去除噪音。效果可能不如优秀的外部去造滤镜,但它执行地非常快。
建议:保持默认或者设置为100-1000用以去噪。
deadzone-inter/intra
默认:无
说明:设置帧间/帧内的亮度量化器输出为0的区域大小。输出为0的区域可以设置为0-32,这个值设置的是x264毫不尝试保护直接丢弃的精密细节。十分精细的细节既难以发觉,编码代价又昂贵,直接丢弃它们可以避免在这些低回报的部分浪费比特。此选项和Trellis选项是互不相容的。
建议:保持默认
cqm
默认:Flat(没设置)
说明:设置自定义的量化矩阵取代内建的内建值。内建值有flast或JVT。
建议:保持默认
参见:–cqmfile
cqmfile
默认:无
说明:使用一个JM格式矩阵文件设置自定义的量化矩阵。会覆盖其他的 –cqm*选项们。
建议:保持默认
参见:–cqm
cqm4* / cqm 8*
默认:无
–cqm4: 设置所有4×4块的量化矩阵,以由16个逗号分隔值域为1-255的值组成的列表的形式给出。
–cqm8: 设置所有8×8块的量化矩阵,以由64个逗号分隔值域为1-255的值组成的列表的形式给出。
–cqm4i, –cqm4p, –cqm8i, –cqm8p: 同时设置色度和亮度(i为帧内、p为帧间)矩阵
–cqm4iy, –cqm4ic, –cqm4py, –cqm4pc: 设置色度或亮度矩阵(y为亮度、c为色度)。这样的参数cqm8也有同样的4个。
建议:保持默认
视频可用性信息
这些参数为解码的程序设置一个可用标记。由于经常被解码软件所忽略,在大多数场景中这些参数都没什么意义,
overscan
默认:undef
说明:如何处理过扫描。过扫描在这里用于只显示图像的一部分。(译者按:过扫描技术本用在阴极射线管显示器中为保持画面完整。)
可选:
undef – 不定义
show – 显示全部图像。理论上此值应该被解码器重视。
crop – 视频已经为过扫描显示器做过处理。可以不重视。
建议:如果你的设备支持此选项,建议在编码之前对视频进行裁剪然后设置为show。如果不支持就别管此选项了。
videoformat
默认:undef
说明:表明此视频在 编码/数字化 之前是什么格式的。
可选:
component
pal
ntsc
secam
mac
undef
建议:设为原视频的格式,或者设为undef。
fullrange
默认:off
说明:表明亮度和色度级别是否是全范围的(译者按:0-255)。如果设为off,则不会使用全范围(译者按:16-235)。
进一步的说明可参见http://blog.yikuyiku.com/?p=2015和http://en.wikipedia.org/wiki/YCbCr。
建议:如果视频源是从模拟视频数字化而来的,设为off。否则则设置为on。
colorprim
默认:undef
说明:设置转换到RGB的原色。
可选:
undef
bt709
bt470m
bt470bg
smpte170m
smpte240m
film
进一步的说明可参见http://en.wikipedia.org/wiki/YCrCb和http://en.wikipedia.org/wiki/RGB_color_spaces。
建议:保持默认,除非你知道你的源用的是哪个值。
transfer
默认:undef
说明:设置光电转换器使用的特性。(设置用于修正的gamma曲线。)
可选:
undef
bt709
bt470m
bt470bg
linear
log100
log316
smpte170m
smpte240m
进一步的说明可参见http://en.wikipedia.org/wiki/Gamma_correction。
建议:保持默认,除非你知道你的源用的是哪个值。
colormatrix
默认:undef
说明:设置用于从RGB原色中提取亮度和色度的矩阵系数。
可选:
undef
bt709
fcc
bt470bg
smpte170m
smpte240m
GBR
YCgCo
进一步的说明可参见http://en.wikipedia.org/wiki/YCrCb。
建议:源使用的值,或者保持默认。
chromaloc
默认:0
说明:设置色度取样位置。(H.264标准的附件E中定义)。取值范围为0-5。
进一步的说明可参见http://git.videolan.org/?p=x264.git;a=blob;f=doc/vui.txt
建议:
如果你以MPEG1源为输入做4:2:0采样的转码,而且没作任何色彩空间转换,应该设置为1;
如果你以MPEG2源为输入做4:2:0采样的转码,而且没作任何色彩空间转换,应该设置为0;
如果你以MPEG4源为输入做4:2:0采样的转码,而且没作任何色彩空间转换,应该设置为0;
其他情况保持默认。
nal-hrd
默认:none
说明:设置HRD信息。用于蓝光流、电视广播和其他一些特殊场合。可用选项如下:
none —— 不设置HRD信息
vbr —— 设置HRD信息
cbr —— 设置HRD信息,而且把流限制在bitrate参数定义的码率内。需要bitrate码率控制方式。
建议:none,除非你需要设置HRD。
参见:–vbv-bufsize, –vbv-maxrate和 –aud
pic-struct
默认:无
说明:强制按照图像时序SEI传送pic_struct。使用–pulldown或 –tff或–bff参数时会隐式启用。
建议:保持默认