X264设定

来自NMM Doc
Holy讨论 | 贡献2010年11月24日 (三) 16:52的版本 →‎intra-refresh
跳到导航 跳到搜索

本页说明所有x264参数之目的和用法。参数的排列相同于在x264 --fullhelp出现的顺序。

x264设定

说明

x264带有一些内置的文件。要阅读此说明,执行x264 --helpx264 --longhelpx264 --fullhelp。越后面的选项将提供更详细的资讯。

输入

用一个位置参数指定输入的视频。例如:

x264.exe -o NUL C:\input.avs
x264 -o /dev/null ~/input.y4m

当输入的视频是raw YUV格式时,还必须告诉x264视频的解析度。你可能也要用--fps来指定帧率:

x264.exe -o NUL --fps 25 --input-res 1280x720 D:\input.yuv 
x264 -o /dev/null --fps 30000/1001 --input-res 640x480 ~/input.yuv

预设值系统

为减少使用者花费时间和精神在命令列上而设计的一套系统。这些设定切换了哪些选项可从x264 --fullhelp的说明中得知。

profile

预设:无

限制输出流的profile。如果指定了profile,将覆盖所有其他设定。所以如果指定了profile,将保证输出的流与该profile相容。如果设了此选项,将不能使用无损编码(--qp 0--crf 0)。

如果知道你的播放设备仅支援某个profile,则应设此选项。大多数解码器支援High profile,因此不需要设此选项。

可用的值:baseline, main, high

preset

预设:medium

更改选项,以权衡压缩效率和编码速度。如果指定了preset,更改的选项将在所有其他参数套用前被套用。

通常应将此选项设为你所能承受的最慢的值。

可用的值:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo

tune

预设:无

调整选项,以进一步优化为视频的内容。如果指定了tune,更改的选项将在--preset之后,但所有其他参数之前被套用。

如果视频内容符合其中一个可用的值,则可设此选项,否则就不要指定。

可用的值:film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency

slow-firstpass

预设:无

随著预设值系统在r1177版本的出现,使用--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。

建议:预设值,或者等于帧率

参阅:--keyint, --scenecut

no-scenecut

预设:无

完全停用自适应I帧判定。

参阅:--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帧更广泛
  • 压缩效率的损失主要来自于在刷新波上左侧(新)的宏块不能参考右侧(旧)的资料