X264设定
本页说明所有x264参数之目的和用法。参数的排列相同于在x264 --fullhelp
出现的顺序。
参阅:X264统计资料输出、X264统计资料档案和X264编码建议。
x264设定
说明
x264带有一些内置的文件。要阅读此说明,执行x264 --help
、x264 --longhelp
或x264 --fullhelp
。越后面的选项会提供越详细的资讯。
输入
以一个位置参数指定输入的视讯。例如:
x264.exe--output
NUL C:\input.avs x264--output
/dev/null ~/input.y4m
当输入是raw YUV格式时,还必须告知x264视讯的解析度。你可能也要使用--fps
来指定帧率:
x264.exe--output
NUL--fps
25--input-res
1280x720 D:\input.yuv x264--output
/dev/null--fps
30000/1001--input-res
640x480 ~/input.yuv
预设
为了减少使用者花费时间和精力在命令列上而设计的一套系统。这些设定切换了哪些选项可以从x264 --fullhelp
的说明里得知。
profile
预设值:无
限制输出资料流的profile。如果指定了profile,它会覆写所有其他的设定。所以如果指定了profile,将会保证得到一个相容的资料流。如果设了此选项,将会无法使用无失真(lossless)编码(--qp
0
或--crf
0
)。
如果播放设备仅支援某个profile,则应该设此选项。大多数解码器都支援High profile,所以没有设定的必要。
可用的值:baseline, main, high
preset
预设值:medium
变更选项,以权衡压缩效率和编码速度。如果指定了预设,变更的选项将会在套用所有其他的参数前套用。
通常应该将此设为所能忍受的最慢一个选项。
可用的值:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
tune
预设值:无
调整选项,以进一步最佳化为视讯的内容。如果指定了tune,变更的选项将会在--preset
之后,但所有其他的参数之前套用。
如果视讯的内容符合其中一个可用的调整值,则可以使用此选项,否则不要使用。
可用的值:film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency
slow-firstpass
预设值:无
使用--pass
1
会在解析命令列的最后套用以下设定:
可以使用--slow-firstpass
来停用此功能。注意,使用--preset
placebo
也会启用slow-firstpass。
参阅:--pass
帧类型选项
keyint
预设值:250
设定x264输出的资料流之最大IDR帧(亦称为关键帧)间隔。可以指定infinite
让x264永远不要插入非场景变更的IDR帧。
IDR帧是资料流的“分隔符号”,所有帧都无法从IDR帧的另一边参照资料。因此,IDR帧也是I帧,所以它们不从任何其他帧参照资料。这意味著它们可以用作视讯的搜寻点(seek points)。
注意,I帧通常明显大于P/B帧(在低动态场景通常为10倍大或更多),所以当它们与极低的VBV设定合并使用时会打乱速率控制。在这些情况下,研究--intra-refresh
。
预设值对于大多数视讯没啥问题。在为蓝光、广播、即时资料流或某些其他特殊情况编码时,可能需要更小的GOP长度(通常等于帧率)。
参阅:--min-keyint
, --scenecut
, --intra-refresh
min-keyint
预设值:自动 (MIN(--keyint
/ 10, --fps
))
设定IDR帧之间的最小长度。
IDR帧的说明可以参阅--keyint
。过小的keyint范围会导致“不正确的”IDR帧位置(例如闪屏场景)。此选项限制在每个IDR帧之后,要有多少帧才可以再有另一个IDR帧的最小长度。
min-keyint的最大允许值是--keyint
/2+1。
建议:预设值,或者等于帧率
no-scenecut
预设值:无
完全停用弹性I帧决策(adaptive I-frame decision)。
参阅:--scenecut
scenecut
预设值:40
设定I/IDR帧位置的阈值(场景变更侦测)。
x264为每一帧计算一个度量值,来估计它与前一帧的不同程度。如果该值低于scenecut,则算侦测到一个“场景变更”。如果此时与最近一个IDR帧的距离低于--min-keyint
,则放置一个I帧,否则放置一个IDR帧。越大的scenecut值会增加侦测到场景变更的数目。场景变更是如何比较的详细资讯可以参阅http://forum.doom9.org/showthread.php?t=121116。
将scenecut设为0相当于设定--no-scenecut
。
建议:预设值
参阅:--keyint
, --min-keyint
, --no-scenecut
intra-refresh
预设值:无
停用IDR帧,作为替代x264会为每隔--keyint
的帧的每个巨集区块(macroblock)使用内部编码(intra coding)。区块是以一个水平卷动的行刷新,称为刷新波(refresh wave)。这有利于低延迟的资料流,使它有可能比标准的IDR帧达到更加固定的帧大小。它也增强了视讯资料流对封包遗失的恢复能力。此选项会降低压缩效率,因此必要时才使用。
有趣的事:
- 第一帧仍然是IDR帧。
- 内部区块(Intra-blocks)仅处于P帧里,刷新波在一或多个B帧后的第一个P帧更广泛。
- 压缩效率的损失主要来自于在刷新波上左侧(新)的巨集区块无法参照右侧(旧)的资料。
bframes
预设值:3
设定x264可以使用的最大并行B帧数。
没有B帧时,一个典型的x264资料流有著像这样的帧类型:IPPPPP...PI。当设了--bframes 2
时,最多两个连续的P帧可以被B帧取代,就像:IBPBBPBPPPB...PI。
B帧类似于P帧,只是B帧还能从它之后的帧做动态预测(motion prediction)。就压缩比来说效率会大幅提高。它们的平均品质是由--pbratio
所控制。
有趣的事:
- x264还区分两种不同种类的B帧。"B"是代表一个被其他帧作为参照帧的B帧(参阅
--b-pyramid
),而"b"则代表一个不被其他帧作为参照帧的B帧。如果看到一段混合的"B"和"b",原因通常与上述有关。当差别并不重要时,通常就以"B"代表所有B帧。 - x264是如何为每个候选帧选定为P帧或B帧的详细资讯可以参阅http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064。在此情况下,帧类型看起来会像这样(假设
--bframes 3
):IBBBPBBBPBPI。
参阅:--b-bias
, --b-pyramid
, --ref
, --pbratio
, --partitions
, --weightb
b-adapt
预设值:1
设定弹性B帧位置决策演算法。此设定控制x264如何决定要放置P帧或B帧。
0
:停用,总是挑选B帧。这与旧的no-b-adapt
设定相同作用。
2
:“最佳”演算法,较慢,越大的--bframes
值会大幅降低速度。
注意:对于多重阶段(multi-pass)编码,仅在第一阶段(first pass)才需要此选项,因为帧类型在此时已经决定完了。
b-bias
预设值:0
控制使用B帧而不使用P帧的可能性。大于0的值增加偏向B帧的加权,而小于0的值则相反。范围是从-100到100。100并不保证全是B帧(要全是B帧该使用--b-adapt
0
),而-100也不保证全是P帧。
仅在你认为能比x264做出更好的速率控制决策时才使用此选项。
b-pyramid
预设值:normal
允许B帧作为其他帧的参照帧。没有此设定时,帧只能参照I/P帧。虽然I/P帧因其较高的品质作为参照帧更有价值,但B帧也是很有用的。作为参照帧的B帧会得到一个介于P帧和普通B帧之间的量化值。b-pyramid需要至少两个以上的--bframes
才会运作。
如果是在为蓝光编码,须使用none
或strict
。
none
:不允许B帧作为参照帧。strict
:每minigop允许一个B帧作为参照帧,这是蓝光标准强制执行的限制。normal
:每minigop允许多个B帧作为参照帧。
参阅:--bframes
, --refs
, --no-mixed-refs
open-gop
预设值:none
open-gop是一个提高效率的编码技术。有三种模式:
none
:停用open-gop。normal
:启用open-gop。bluray
:启用open-gop。一个效率较低的open-gop版本,因为normal
模式无法用于蓝光编码。
某些解码器不完全支援open-gop资料流,这就是为什么此选项并未预设为启用。如果想启用open-gop,应该先测试所有可能用来拨放的解码器。
open-gop的说明可以参阅http://forum.doom9.org/showthread.php?p=1300124#post1300124。
no-cabac
预设值:无
停用弹性内容的二进位算数编码(CABAC:Context Adaptive Binary Arithmetic Coder)资料流压缩,切换回效率较低的弹性内容的可变长度编码(CAVLC:Context Adaptive Variable Length Coder)系统。大幅降低压缩效率(通常10~20%)和解码的硬体需求。
ref
预设值:3
控制解码图片缓冲(DPB:Decoded Picture Buffer)的大小。范围是从0到16。总之,此值是每个P帧可以使用它前面多少个帧作为参照帧的数目(B帧可以使用的数目要少一或两个,取决于它们是否作为参照帧)。可以作为参照帧的最小ref数是1。
还要注意的是,H.264规格限制了每个level的DPB大小。如果遵守Level 4.1规格,720p和1080p视讯的最大ref数分别是9和4。
参阅:--b-pyramid
, --no-mixed-refs
, --level
no-deblock
预设值:无
完全停用loop滤镜。不建议。
参阅:--deblock
deblock
预设值:0:0
控制loop滤镜(亦称为inloop deblocker),这是H.264标准的一部分。就性价比来说非常有效率。
可以在http://forum.doom9.org/showthread.php?t=109747找到loop滤镜的参数是如何运作的说明(参阅第一个帖子和akupenguin的回复)。
参阅:--no-deblock
slices
预设值:0
设定每帧的切片数,而且强制为矩形切片(会被--slice-max-size
或--slice-max-mbs
覆写)。
如果是在为蓝光编码,将值设为4。否则,不要使用此选项,除非你知道真的有必要。
参阅:--slice-max-size
, --slice-max-mbs
slice-max-size
预设值:0
设定最大的切片大小(单位是位元组),包括估计的NAL额外负荷(overhead)。(目前与--interlaced
不相容)
参阅:--slices
slice-max-mbs
预设值:0
设定最大的切片大小(单位是巨集区块)。(目前与--interlaced
不相容)
参阅:--slices
tff
启用交错式编码并指定顶场优先(top field first)。x264的交错式编码使用MBAFF,本身效率比渐进式编码差。出于此原因,仅在打算于交错式显示器上播放此视讯时,才应该编码为交错式(或者视讯在送给x264之前无法进行去交错)。此选项会自动启用--pic-struct
。
bff
启用交错式编码并指定底场优先(bottom field first)。详细资讯可以参阅--tff
。
constrained-intra
预设值:无
启用限制的内部预测(constrained intra prediction),这是SVC编码的基础层(base layer)所需要的。由于EveryoneTM忽略SVC,你同样可以忽略此选项。
pulldown
预设值:none
使用其中一个预设模式将渐进式、固定帧率的输入资料流标志上软胶卷过带(soft telecine)。软胶卷过带在http://trac.handbrake.fr/wiki/Telecine有更详细的解释。
可用的预设:none, 22, 32, 64, double, triple, euro
指定除了none
以外的任一模式会自动启用--pic-struct
。
fake-interlaced
预设值:无
将资料流标记为交错式,即使它并未以交错式来编码。用于编码25p和30p为符合蓝光标准的视讯。
速率控制
qp
预设值:无
三种速率控制方法之一。设定x264以固定量化值(Constant Quantizer)模式来编码视讯。这里给的值是指定P帧的量化值。I帧和B帧的量化值则是衍生自--ipratio
和--pbratio
。CQ模式把某个量化值作为目标,这意味著最终档案大小是未知的(虽然可以透过一些方法来准确地估计)。将值设为0会产生无失真输出。对于相同视觉品质,qp会比--crf
产生更大的档案。qp模式也会停用弹性量化,因为按照定义“固定量化值”意味著没有弹性量化。
此选项与--bitrate
和--crf
互斥。各种速率控制系统的详细资讯可以参阅http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
虽然qp不需要lookahead来执行因此速度较快,但通常应该改用--crf
。
参阅:--bitrate
, --crf
, --ipratio
, --pbratio
bitrate
预设值:无
三种速率控制方法之二。以目标位元速率(target bitrate)模式来编码视讯。目标位元速率模式意味著最终档案大小是已知的,但最终品质则未知。x264会尝试把给定的位元速率作为整体平均值来编码视讯。此参数的单位是千位元/秒(8位元=1位元组)。注意,1千位元(kilobit)是1000位元,而不是1024位元。
此设定通常与--pass
在两阶段(two-pass)编码一起使用。
此选项与--qp
和--crf
互斥。各种速率控制系统的详细资讯可以参阅http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
参阅:--qp
, --crf
, --ratetol
, --pass
, --stats
crf
预设值:23.0
最后一种速率控制方法:固定速率系数(Constant Ratefactor)。当qp是把某个量化值作为目标,而bitrate是把某个档案大小作为目标时,crf则是把某个“品质”作为目标。构想是让crf n提供的视觉品质与qp n相同,只是档案更小一点。crf值的度量单位是“速率系数(ratefactor)”。
CRF是借由降低“较不重要”的帧之品质来达到此目的。在此情况下,“较不重要”是指在复杂或高动态场景的帧,其品质不是很耗费位元数就是不易察觉,所以会提高它们的量化值。从这些帧里所节省下来的位元数被重新分配到可以更有效利用的帧。
CRF花费的时间会比两阶段编码少,因为两阶段编码中的“第一阶段”被略过了。另一方面,要预测CRF编码的最终位元速率是不可能的。根据情况哪种速率控制模式更好是由你来决定。
此选项与--qp
和--bitrate
互斥。各种速率控制系统的详细资讯可以参阅http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
rc-lookahead
预设值:40
设定mb-tree速率控制和vbv-lookahead使用的帧数。最大允许值是250。
对于mb-tree部分,增加帧数带来更好的效果但速度也会更慢。mb-tree使用的最大缓冲值是MIN(rc-lookahead, --keyint
)。
对于vbv-lookahead部分,当使用vbv时,增加帧数带来更好的稳定性和准确度。vbv-lookahead使用的最大值是:
MIN(rc-lookahead, MAX(--keyint
, MAX(--vbv-maxrate
,--bitrate
) /--vbv-bufsize
*--fps
))
参阅:--no-mbtree
, --vbv-bufsize
, --vbv-maxrate
vbv-maxrate
预设值:0
设定重新填满VBV缓冲的最大速率。
VBV会降低品质,所以必要时才使用。
参阅:--vbv-bufsize
, --vbv-init
, VBV编码建议
vbv-bufsize
预设值:0
设定VBV缓冲的大小(单位是千位元)。
VBV会降低品质,所以必要时才使用。
参阅:--vbv-maxsize
, --vbv-init
, VBV编码建议
vbv-init
预设值:0.9
设定VBV缓冲必须填满多少才会开始播放。
如果值小于1,初始的填满量是:vbv-init * vbv-bufsize。否则该值即是初始的填满量(单位是千位元)。
参阅:--vbv-maxsize
, --vbv-bufsize
, VBV编码建议
crf-max
预设值:无
一个类似--qpmax
的设定,只是指定的是最大速率系数而非最大量化值。当使用--crf
且启用VBV时,此选项才会运作。它阻止x264降低速率系数(亦称为“品质”)到低于给定的值,即使这样做会违反VBV的条件约束。此设定主要适用于自订资料流伺服器。详细资讯可以参阅http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52。
参阅:--crf
, --vbv-maxrate
, --vbv-bufsize
qpmin
预设值:10
定义x264可以使用的最小量化值。量化值越小,输出就越接近输入。到了一定的值,x264的输出看起来会跟输入一样,即使它并不完全相同。通常没有理由允许x264花费比这更多的位元数在任何特定的巨集区块上。
当弹性量化启用时(预设启用),不建议提高qpmin,因为这会降低帧里面平面背景区域的品质。
qpmax
预设值:51
定义x264可以使用的最大量化值。预设值51是H.264规格可供使用的最大量化值,而且品质极低。此预设值有效地停用了qpmax。如果想要限制x264可以输出的最低品质,可以将此值设小一点(通常30~40),但通常并不建议调整此值。
参阅:--qpmin
, --pbratio
, --crf-max
qpstep
预设值:4
设定两帧之间量化值的最大变更幅度。
ratetol
预设值:1.0
此参数有两个目的:
- 在一阶段位元速率编码时,此设定控制x264可以偏离目标平均位元速率的百分比。可以指定
inf
来完全停用溢出侦测(overflow detection)。可以设定的最小值是0.01。值设得越大,x264可以对接近电影结尾的复杂场景作出越好的反应。此目的的度量单位是百分比(例如,1.0等于允许1%的位元速率偏差)。
- 很多电影(例如动作片)在电影结尾时是最复杂的。因为一阶段编码并不知道这一点,结尾所需的位元数通常被低估。将ratetol设为
inf
可以减轻此情况,借由允许编码以更像--crf
的模式运行,但档案大小将会暴增。
- 很多电影(例如动作片)在电影结尾时是最复杂的。因为一阶段编码并不知道这一点,结尾所需的位元数通常被低估。将ratetol设为
- 当VBV启用时(即指定了--vbv-开头的选项),此设定也会影响VBV的强度。值设得越大,允许VBV在冒著可能违反VBV设定的风险下有越大的波动。
ipratio
预设值:1.40
修改I帧量化值相比P帧量化值的目标平均增量。越大的值会提高I帧的品质。
参阅:--pbratio
pbratio
预设值:1.30
修改B帧量化值相比P帧量化值的目标平均减量。越大的值会降低B帧的品质。当mbtree启用时(预设启用),此设定无作用,mbtree会自动计算最佳值。
参阅:--ipratio
chroma-qp-offset
预设值:0
在编码时增加色度平面量化值的偏移。偏移可以为负数。
当使用psy-rd或psy-trellis时,x264自动降低此值来提高亮度的品质,其后降低色度的品质。这些设定的预设值会使chroma-qp-offset再减去2。
注意:x264仅在同一量化值编码亮度平面和色度平面,直到量化值29。在此之后,色度逐步以比亮度低的量被量化,直到亮度在q51和色度在q39为止。此行为是由H.264标准所要求。
aq-mode
预设值:1
弹性量化模式。没有AQ时,x264很容易分配不足的位元数到细节较少的部分。AQ是用来更好地分配视讯里所有巨集区块之间的可用位元数。此设定变更AQ会重新分配位元数到哪个范围里:
0
:完全不使用AQ。1
:允许AQ重新分配位元数到整个视讯和帧内。2
:自动变化(Auto-variance)AQ,会尝试对每帧调整强度。(实验性的)
参阅:--aq-strength
aq-strength
预设值:1.0
弹性量化强度。设定AQ偏向低细节(平面)的巨集区块之强度。不允许为负数。0.0~2.0以外的值不建议。
参阅:--aq-mode
pass
预设值:无
此为两阶段编码的一个重要设定。它控制x264如何处理--stats
档案。有三种设定:
1
:建立一个新的统计资料档案。在第一阶段使用此选项。2
:读取统计资料档案。在最终阶段使用此选项。3
:读取统计资料档案并更新。
统计资料档案包含每个输入帧的资讯,可以输入到x264以改进输出。构想是执行第一阶段来产生统计资料档案,然后第二阶段将建立一个最佳化的视讯编码。改进的地方主要是从更好的速率控制中获益。
参阅:--stats
, --bitrate
, --slow-firstpass
, X264统计资料档案
stats
预设值:"x264_2pass.log"
设定x264读取和写入统计资料档案的位置。
参阅:--pass
, X264统计资料档案
no-mbtree
预设值:无
停用巨集区块树(macroblock tree)速率控制。使用巨集区块树速率控制会改进整体压缩率,借由追踪跨帧的时间传播(temporal propagation)然后相应地加权。除了已经存在的统计资料档案之外,多重阶段编码还需要一个新的统计资料档案。
建议:预设值
参阅:--rc-lookahead
qcomp
预设值:0.60
量化值曲线压缩系数。0.0是固定位元速率,1.0则是固定量化值。
当mbtree启用时,它会影响mbtree的强度(qcomp越大,mbtree越弱)。
建议:预设值
cplxblur
预设值:20
以给定的半径范围套用高斯模糊(gaussian blur)于量化值曲线。这意味著分配给每个帧的量化值会被它的邻近帧模糊掉,以此来限制量化值波动。
qblur
预设值:0.5
在曲线压缩之后,以给定的半径范围套用高斯模糊于量化值曲线。不怎么重要的设定。
zones
预设值:无
调整视讯的特定片段之设定。可以修改每区段的大多数x264选项。
- 一个单一区段的形式为<起始帧>,<结束帧>,<选项>。
- 多个区段彼此以"/"分隔。
选项:
这两个是特殊选项。每区段只能设定其中一个,而且如果有设定其中一个,它必须为该区段列出的第一个选项:
- b=<浮点数> 套用位元速率乘数在此区段。在额外调整高动态和低动态场景时很有用。
- q=<整数> 套用固定量化值在此区段。在套用于一段范围的帧时很有用。
其他可用的选项如下:
- ref=<整数>
- b-bias=<整数>
- scenecut=<整数>
- no-deblock
- deblock=<整数>:<整数>
- deadzone-intra=<整数>
- deadzone-inter=<整数>
- direct=<字串>
- merange=<整数>
- nr=<整数>
- subme=<整数>
- trellis=<整数>
- (no-)chroma-me
- (no-)dct-decimate
- (no-)fast-pskip
- (no-)mixed-refs
- psy-rd=<浮点数>:<浮点数>
- me=<字串>
- no-8x8dct
- b-pyramid=<字串>
限制:
- 一个区段的参照帧数无法超过
--ref
所指定的大小。 - 无法开启或关闭scenecut;如果
--scenecut
最初为开启(>0),则只能改变scenecut的大小。 - 如果使用
--me
esa
/tesa
,merange无法超过最初所指定的大小。 - 如果
--subme
最初指定为0,则无法变更subme。 - 如果
--me
最初指定为dia、hex或umh,则无法将me设为esa为tesa。
范例:0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000
建议:预设值
qpfile
手动覆写标准的速率控制。指定一个档案,为指定的帧赋予量化值和帧类型。格式为“帧号 帧类型 量化值”。例如:
0 I 18 < IDR (key) I-frame 1 P 18 < P-frame 2 B 18 < Referenced B-frame 3 i 18 < Non-IDR (non-key) I-frame 4 b 18 < Non-referenced B-frame 5 K 18 < Keyframe*
- 不需要指定每个帧。
- 使用-1作为所需的量化值允许x264自行选择最佳的量化值,在只需设定帧类型时很有用。
- 在指定了大量的帧类型和量化值时仍然让x264间歇地自行选择,会降低x264的效能。
- "Keyframe"是一个泛用关键帧/搜寻点,如果
--open-gop
是none
则等同于一个IDR I帧,否则等同于一个加上Recovery Point SEI标帜的Non-IDR I帧。
分析
partitions
预设值:p8x8,b8x8,i8x8,i4x4
H.264视讯在压缩过程中划分为16x16的巨集区块。这些区块可以进一步划分为更小的分割区,这就是此选项要控制的部分。
此选项可以启用个别分割区。分割区依不同帧类型启用。
可用的分割区:p8x8, p4x4, b8x8, i8x8, i4x4, none, all
- I:i8x8、i4x4。
- P:p8x8(也会启用p16x8/p8x16)、p4x4(也会启用p8x4/p4x8)。
- B:b8x8(也会启用b16x8/b8x16)。
p4x4通常不怎么有用,而且性价比极低。
参阅:--no-8x8dct
direct
预设值:spatial
设定"direct"动态向量(motion vectors)的预测模式。有两种模式可用:spatial
和temporal
。可以指定none
来停用direct动态向量,和指定auto
来允许x264在两者之间切换为适合的模式。如果设为auto
,x264会在编码结束时输出使用情况的资讯。auto
最适合用于两阶段编码,但也可用于一阶段编码。在第一阶段auto
模式,x264持续记录每个方法执行到目前为止的好坏,然后从该记录挑选下一个预测模式。注意,仅在第一阶段有指定auto
时,才应该在第二阶段指定auto
;如果第一阶段不是指定auto
,第二阶段将会预设为temporal
。none
模式会浪费位元数,因此强烈不建议。
建议:auto
no-weightb
预设值:无
H.264允许“加权”B帧的参照,它允许变更每个参照影响预测图片的程度。此选项停用该功能。
建议:预设值
weightp
预设值:2
使x264能够使用明确加权预测(explicit weighted prediction)来改进P帧的压缩。模式越高越慢。
注意:在为Adobe Flash编码时,将值设为0,否则它的解码器会产生不自然痕迹(artifacts)。Flash 10.1修正了此bug。
模式:
0
:停用。1
:盲目偏移(固定-1的偏移)。2
:智慧重复帧分析,特别设计为改进淡入/淡出的压缩。
me
预设值:hex
设定全像素(full-pixel)动态估算(motion estimation)的方法。有五个选项:
dia
(diamond):最简单的搜寻方法,起始于最佳预测器(predictor),检查上、左、下、右方一个像素的动态向量,挑选其中最好的一个,然后重复此过程,直到它不再找到任何更好的动态向量为止。hex
(hexagon):由类似策略组成,只是它使用周围6点范围为2的搜寻,因此叫做六边形。它比dia
更有效率且速度几乎没有变慢,因此作为一般用途的编码是个不错的选择。umh
(uneven multi-hex):比hex更慢,但搜寻复杂的多六边形图样以避免遗漏难以找到的动态向量。不像hex和dia,merange参数直接控制umh的搜寻半径,允许增加或减少广域搜寻的大小。esa
(exhaustive):一种在merange内整个动态搜寻空间的高度最佳化智慧搜寻。虽然速度较快,但数学上相当于搜寻该区域每个单一动态向量的暴力(bruteforce)方法。不过,它仍然比UMH还要慢,而且没有带来很大的好处,所以对于日常的编码不是特别有用。tesa
(transformed exhaustive):一种尝试接近在每个动态向量执行Hadamard转换法(transform)比较的效果之演算法,就像exhaustive,但效果好一点而速度慢一点。
参阅:--merange
merange
预设值:16
merange控制动态搜寻的最大范围(单位是像素)。对于hex和dia,范围限制在4~16。对于umh和esa,它可以增加到超过预设值16来允许范围更广的动态搜寻,对于HD视讯和高动态镜头很有用。注意,对于umh、esa和tesa,增加merange会大幅减慢编码速度。
参阅:--me
mvrange
预设值:-1 (自动)
设定动态向量的最大(垂直)范围(单位是像素)。预设值依level不同:
- Level 1/1b:64
- Level 1.1~2.0:128
- Level 2.1~3.0:256
- Level 3.1+:512
注意:如果想要手动覆写mvrange,在设定时从上述值减去0.25(例如--mvrange 127.75
)。
建议:预设值
mvrange-thread
预设值:-1 (自动)
设定在执行绪之间的最小动态向量缓冲。不要碰它。
建议:预设值