跳转到内容

MeGUI/x264 设置

来自维基教科书,开放世界中的开放书籍

x264 设置

[编辑 | 编辑源代码]

帧类型选项

[编辑 | 编辑源代码]

整数: 250

设置 x264 输出中 IDR 帧(又名关键帧)之间的最大间隔。通常,x264 只有在通过 scenecut 设置的阈值时才会使帧成为 IDR 帧。此设置允许您在 IDR 帧出现之前放置一个上限。IDR 帧是流中的“分隔符” - 任何帧都不能引用 IDR 两侧的数据。这意味着它们可以被用作在电影中随机查找的点(您不能仅仅从任何地方开始播放,因为帧会引用前面的帧,而前面的帧会引用前面的帧,等等)。请注意,虽然 IDR 帧一定是 I 帧,但并非所有 I 帧都是 IDR 帧。大多数情况下,x264 会将新摄像机场景的第一帧设为 IDR 帧,因此此设置在大多数情况下都不会发挥作用。更高的设置理论上可以提高压缩率(减少强制 IDR 帧的数量,否则这些帧会是更小的 P 或 B 帧),以及在平均量化器较高时减少质量波动现象的出现(因为 I 帧与它们的邻居在伪影方面没有任何相似性,所以伪影更显眼)。较低的设置可以减少查找特定帧所需的时间。

推荐:默认值,或您帧速率的 10 倍。在 CPU 要求很高的高清编码中,您可能需要使用更小的值(例如帧速率的 2 倍到 5 倍)。

另请参见:min-keyintscenecut

min-keyint

[编辑 | 编辑源代码]

整数: 25

设置 IDR 帧之间的最小长度。请参阅 keyint 以了解 IDR 帧的解释。非常小的 IDR 范围可以减少“不正确”帧的放置(例如,闪烁的场景)。此选项限制了每个 IDR 帧之后放置另一个 IDR 帧之前的最小长度。

推荐:默认值,或您的帧速率。

另请参见:keyintscenecut

整数: 40

设置 IDR 帧放置的阈值(即:场景变化检测)。x264 计算每个帧的度量来估计它与前一帧的差异。如果值低于 scenecut,则使用 IDR 帧。度量稍微复杂一些,但这是一个合理的近似值。scenecut 的较高值会增加检测到的场景分割的数量。有关场景分割比较工作原理的更多信息,请参阅 此 doom9 线程

另请参见:keyintmin-keyintpre-scenecut

pre-scenecut

[编辑 | 编辑源代码]

默认:在 --threads 1 时禁用,否则启用

启用更快的场景分割机制。当您使用多于一个线程时,它默认情况下是启用的,因为常规(非预先)场景分割不适用于线程。常规 IDR 帧编码通过正常编码帧来工作,然后如果帧通过场景分割测试,则将其重新编码为 IDR 帧。预先场景分割在编码之前检测帧是否应该为 IDR 帧,并相应地进行操作。理论上,预先场景分割不如常规场景分割好,但通常成本很低。有关由于错误的 IDR 帧放置导致的质量损失的更多信息,请参阅 此 doom9 线程

建议:默认

另请参阅:keyintmin-keyintscenecutthreads

整数:0

设置 x264 可以使用的最大并发 B 帧数量。B 帧类似于 P 帧,不同之处在于它们还可以使用来自未来帧的运动预测。这可以显着提高压缩比方面的效率。它们的平均质量由 pbratio 控制。有关 x264 在每个候选帧之间选择 P 帧或 B 帧的详细信息,请参阅 此 ffmpeg-devel 邮件。在这种情况下,帧类型将如下所示(按显示顺序)(假设 --bframes 3):IBBBPBBBPBPI。

附加信息:x264 偶尔也会区分两种不同的 B 帧。'B' 可以指用作其他帧的参考的 B 帧,而 'b' 可以指不是参考的 B 帧。如果您看到 'B' 和 'b' 的混合,这通常与上述情况有关。当差异不重要时,通常使用 'B' 来指代所有 B 帧。

建议:除非您使用 --b-adapt 2,否则选择 --bframes 16,即最大值。这是编码器最快也是最灵活的选择。如果您使用 --b-adapt 2,则更低的 --bframes 是合理的,例如 2-5。更高的值会显着减慢编码速度,而不会带来明显的好处。要了解编码中使用了多少 B 帧,请在编码完成后阅读 x264 统计输出中的“连续 B 帧”行。

有时您必须将就更少的 B 帧数量:蓝光限制了最大 B 帧数量。

B 帧也可能会增加解码器 CPU 使用率,但比特率降低(因此减少在 CABAC 上花费的时间)可能会抵消这种影响。任何影响都将很小。

另请参阅:no-b-adaptb-biasb-pyramidrefpbratiopartitionsweightbb-rdobime

no-b-adapt

[编辑 | 编辑源代码]

注意:此选项用于向后兼容,请改用 b-adapt 0。

默认:未设置

禁用自适应 B 帧放置。通常,在编码一组帧时,x264 会将一些帧编码为 B 帧,将一些帧编码为 P 帧,混合在一起最有效。这可能意味着在一段时间内不会使用 B 帧。设置此选项会删除自适应决策并强制 x264 使用尽可能多的 B 帧。

示例:您运行带有 3 个最大 B 帧的编码,并且启用了 b-adapt(即默认值)。您会看到这样(按显示顺序):IBBPPBBBPBBPBPBPI。如果您再次运行它,但使用了 no-b-adapt,您将看到这样:IBBBPBBBPBBBPBBPI。请注意,该序列只是在 GOP 的最后三个组中被中断。此设置没有真正的优势,缺点是您降低了 x264 的效率。最终会做出非最佳的帧类型决策。请注意,如果您想在多线程模式下强制使用特定数量的 B 帧,则还需要禁用 scenecut,将其设置为 -1:这是因为 pre-scenecut 不适用于 no-b-adapt。

建议:默认,请参阅上述。

另请参阅:b-frames

注意:对于多遍编码,此选项仅在决定帧类型的第一遍需要。

0 - 禁用

1 - 旧算法,更快,随着 b-frames 设置的提高,速度略微提高。

2 - 新算法,更慢,随着 b-frames 设置的提高,速度显着降低。

整数:0

控制使用 B 帧代替 P 帧的可能性。大于 0 的值会增加对 B 帧的权重,而小于 0 的值会相反。此数字不是百分比或绝对增长,只是一个任意度量数字。范围为 -100 到 100。请注意,值为 100 并不能保证每个 P 帧都会被转换(使用 no-b-adapt 来实现这一点)。

只有在您认为自己比 x264 做出更好的码率控制决策时才使用此选项。

建议 0

另请参阅:b-frames,另请参阅:ipratio

b-pyramid

[编辑 | 编辑源代码]

默认:未设置

允许将 B 帧用作其他帧的参考。没有此设置,帧只能引用 I 帧或 P 帧。尽管 I/P 帧因为其质量更高而更受重视,但 B 帧也可能有用。被指定为参考的 B 帧将获得介于 P 帧和普通 B 帧之间的量化器。

建议:启用,如果您至少有两个 B 帧。会略微降低编码速度。注意:在旧版本的 x264 中,这会增加 DPB 大小,但现在根据 ref 是恒定的。

另请参阅:b-framesrefsmixed-refs

默认:未设置

禁用 CABAC (Context Adaptive Binary Arithmetic Coder) 流压缩,并回退到效率较低的 CAVLC (Context Adaptive Variable Length Coder) 系统。显着降低了压缩效率和解码需求。

许多手持设备没有足够的处理能力来回放 CABAC 内容,因此您需要为它们编码 CAVLC。Apple 计算机生产的东西也往往缺乏正确解码 CABAC 的能力。CABAC 相比 CAVLC 的优势是压缩率提高了 10-20%。

建议:默认,始终,除非您的播放器不支持它。

默认:1

控制 DPB (Decoded Picture Buffer) 的大小。范围为 0..16。简而言之,此值是每个 P 帧可以使用多少个先前帧作为参考。B 帧可以使用少一个或两个,具体取决于它们是否用作参考。可以引用的最小参考数量为 1。

请注意,此设置过去用于控制使用的参考数量。请参阅 此 doom9 帖子,其中概述了差异。

另请注意,ITU-T 规范 限制了 DPB,因此限制了每个级别的 ref。如果遵守 级别 4.1 规范,则对于全高 720p 和 1080p 视频,最大 ref 分别为 9 和 4。但是,如果视频高度不是完整的 720 或 1080 像素,则可以使用更高的 ref。级别 4.1 是蓝光和 HD DVD 上实现的级别,也是大多数支持 H.264 播放的消费电子产品中支持的最高级别,包括 Xbox 360、Playstation 3 和 Popcorn Hour A-100 媒体扩展器。计算最大 ref 的公式如下,结果应向下取整

最大 ref = 12288 * 1024 / (宽度 * 高度 * 1.5)

建议:大约 4-6。每次增加带来的好处都会减少,并且速度损失始终存在。通常,过多的参考并没有什么用处,但即使高达 16 个参考也有助于动画内容、视频游戏捕捉、CGI 和其他类似内容。

另请参阅:b-pyramidmixed-refslevel

no-deblock

[编辑 | 编辑源代码]

完全禁用循环内去块。

另请参阅:deblock

默认:0:0

控制循环滤波器(也称为循环内去块器),它是 h264 标准的一部分。循环滤波器在一个项目上占用了相当一部分解码时间,并且对总体质量输出占用了类似的一部分。它在编码时间与质量增益方面非常有效。

您可以在 此 doom9 主题 中找到有关循环滤波器参数如何工作的详细说明(请参阅初始帖子和 akupenguin 的回复)。

建议:默认。如果您觉得 x264 的模糊程度过高,可以使用较低的值,尽管只有在您有足够的剩余比特率时才有帮助。合理的值可能在 -3 到 3 之间。请注意,在更高的比特率(因此量化器更低)下,去块本来就比较弱,因此您无需通过降低去块设置或反之来“补偿”更高的比特率。

另请参阅:yes-deblock 1 -3 -3

interlaced

[编辑 | 编辑源代码]

默认:未设置

启用隔行扫描编码。x264 的隔行扫描编码效率本来就低于逐行扫描编码,因此在编码之前对隔行扫描源进行隔行扫描可能比使用隔行扫描模式更好。

码率控制

[编辑 | 编辑源代码]

默认:未设置

三种可能的码率控制方法中的第一种。设置 x264 以 **C**onstant **Q**uantizer 模式编码影片。您在此处给出的数字指定了 P 帧量化器。用于 I 和 B 帧的量化器是从 ipratiopbratio 派生的。CQ 模式针对特定量化器,这意味着最终文件大小未知(尽管可以使用某些方法对其进行相当准确的估计)。设置为 0 将产生无损输出。对于相同的视觉质量,qp 产生的文件比 crf 大。qp 模式还禁用自适应量化,因为根据定义,“恒定量化器”意味着没有自适应量化。

此选项与 bitratecrf 互斥。有关各种码率控制系统的更多信息,请参阅 此文章

**建议:** 使用 crf 代替

另请参阅:bitratecrfipratiopbratio

默认:未设置

三种码率控制方法中的第二种。以目标码率模式编码视频。x264 将尝试编码视频以将给定码率作为最终平均值。给定的参数是以千比特/秒为单位的码率。 (8 位 = 1 字节,依此类推)。此设置通常与 pass 结合使用以进行两遍编码。目标码率模式意味着最终文件大小已知,但最终质量未知(尽管可以使用合理的精度进行估计)。通常不建议在没有两遍编码的情况下使用码率模式。

此选项与 cq 和 crf 互斥。有关各种码率控制系统的更多信息,请参阅 此文章

**建议:** 产生 P 帧量化器约为 18-26 的值。估计范围:对于 SD 分辨率:800kbits - 2100kbits。对于 720p,3-6mbit。对于 1080p,8-15mbit+

**另请参阅:** qpcrfratetolpassstats

默认:23

最终的码率控制方法:**C**onstant **R**atefactor。虽然 qp 针对特定量化器,而码率针对特定文件大小,但 crf 针对特定“质量”。这个想法是让 crf n 提供与 qp n 相同的感知质量,只是在更小的空间内。它不是极其准确,但相当接近(并且在大量视频上平均出来会是准确的)。

CRF 通过降低不重要帧的质量来实现这一点。在这种情况下,复杂或高运动场景中的帧(质量更昂贵(以位数计)和/或更不明显)将增加其量化器。在这些剪辑中节省的位将重新分配到可以更有效地利用它们的帧。CRF 模式提供了与相同码率下的两遍几乎完全相同的质量;区别在于您无法选择输出码率。

此选项与 cq 和码率互斥。有关各种码率控制系统的更多信息,请参阅 此文章

**建议:** 范围 18-26 可能是您要查看的范围。如果您需要绝对完美的质量,您可以降至 16,但可能不值得。大约 19-21.5 是一个翻录看起来非常好的地方。更高分辨率的编码通常可以使用更高的 crf 值。

另请参阅:qpbitrate

vbv-maxrate

[编辑 | 编辑源代码]

默认:0

设置 VBV 模式下的最大码率。只有在您有需要它的硬件解码器时才应使用 VBV。强烈建议(尽管不是必需的)将 VBV 与两遍码率模式一起使用。

另请参阅:vbv-bufsizevbv-init

vbv-bufsize

[编辑 | 编辑源代码]

默认:0

设置 VBV 缓冲区的大小。只有在您有需要它的硬件解码器时才应使用 VBV。选择的缓冲区通常特定于目标设备。

另请参阅:vbv-maxsizevbv-init

默认:0

设置 VBV 填充缓冲区大小的初始大小。不应调整。

另请参阅:vbv-maxsizevbv-bufsize

默认:10

定义 x264 将使用的最小量化器。量化器越低,输出越接近输入。在某个时候,即使 x264 的输出与输入不完全相同,但看起来也会相同。通常没有理由让 x264 在任何特定帧/区域上花费比这更多的位。对于大多数视频来说,任何低于 q16 的东西都会以这种方式在感知上无损,而任何低于保守的默认 q10 的东西肯定都会无损。

您可以使用此设置来防止创建不必要的大文件。请注意,如果您将其积极设置(例如设置为 16 或类似),并且您的基于码率的编码没有达到应有的大小,这可能是原因。您应该分析 x264 在编码结束时的统计输出,看看所有帧是否都处于最小量化器。

如果启用了自适应量化(默认情况下启用),强烈建议不要将 qpmin 提高到其默认值,因为这会降低帧的平坦背景区域的质量。

另请参阅:qpmaxipratio

默认:51

上面 qpmin 的反面。定义 x264 可以使用的最大量化器。默认值为 51,是 h264 规范中可用的最高量化器,质量极低。此默认值实际上禁用了 qpmax。如果您想限制 x264 可以输出的最低质量,您可以将其设置得更低(通常,30-40 范围内的值尽可能低),但通常不建议调整它。

另请参阅:qpminpbratio

默认:4

设置两帧之间量化器的最大变化。如果某帧以 q20 编码,则下一帧的量化器将被限制,如果它低于 16 或高于 24。

此设置背后的目的是减少输出视频中出现任何大幅质量跳跃的可能性。其原因是,将这种变化在几帧内缓慢进行比一次性完成更好。请记住,大多数标准质量的视频最多会在量化器 16-30 之间变化,此设置最多只能扭曲三帧的码率分配。默认值是一个很好的值。

默认:1.0

仅适用于一遍码率编码。设置 x264 可以偏离目标平均码率的百分比。1.0 = 1%。这意味着最终平均码率(以及相应的文件大小)将在大约 ±1% 的您设置的值内。

您可以将其设置为“inf”以完全禁用此溢出检测。您可以将其设置为 0 以告知 x264 必须准确达到目标比特率,但它可能并不总是可行,并且通常会降低视频最后几个%的质量。

许多电影(例如任何动作片)在高潮结局时最复杂。由于 1pass 编码不知道这一点,因此通常低估了结尾所需的比特数。ratetol 为 inf 可以通过允许编码更像 crf 编码来缓解这种情况,但文件大小会膨胀。

ipratio

[edit | edit source]

默认值:1.40

设置与 P 帧相比,I 帧的平均目标比特率增加。在 xvid 中被视为“关键帧提升”。较高的值会提高 I 帧的质量。这使它们成为更好的参考,可以提高整体图像质量。问题是 I 帧占用的额外比特是从 P 帧和 B 帧中获取的,这使得这个变量成为一个平衡行为。

另请参阅:pbratio

pbratio

[edit | edit source]

默认值:1.30

设置与 P 帧相比,B 帧的平均目标比特率降低。此变量的工作方式与上面的 ipratio 几乎相同。

另请参阅:ipratio

chroma-qp-offset

[edit | edit source]

默认:0

通常,x264 以相同的量化器对所有三个颜色平面(亮度、U(色度)、V(色度))进行编码。此值将添加到 U 和 V 平面的量化器。这允许您通过设置正值(色度字段将具有更高的量化器)或有利于颜色(色度)来偏向 x264 有利于亮度(亮度)。请记住,x264 将视频编码为 YV12,这意味着色度只占亮度空间的一半。

注意:x264 仅在量化器 29 之前以相同的量化器对亮度和色度平面进行编码。在此之后,色度被逐渐量化,量化程度低于亮度,直到最终亮度为 q51,色度为 q39。此行为不可调整,因为它是 H.264 标准所要求的。

aq-mode

[edit | edit source]

自适应量化模式

默认:1

没有 AQ,x264 往往会低估分配给较低细节部分的比特。AQ 用于更好地在视频中的所有宏块之间分配可用比特。此设置更改了 AQ 在其中重新排列比特的范围

  • 0:根本不使用 AQ。
  • 1:允许 AQ 在每帧内重新分配比特。
  • 2:允许 AQ 在整个视频中重新分配比特。
  • 3:自动方差 AQ,偏向于暗场景。

建议:默认

另请参阅: aq-strength

aq-strength

[edit | edit source]

自适应量化强度

默认值 1.0

设置 AQ 偏向低细节(“平坦”)宏块的强度。不允许负值。超过 1.0 几个百分点的值可能不是一个好主意。

建议:默认

另请参阅: aq-mode

默认:未设置

这是 2pass 编码的重要设置。它控制 x264 如何处理 stats 文件。它有三种设置

  • 1:创建新的 statsfile。在第一次通过时使用它。
  • 2:读取 statsfile。在最后一次通过时使用它。
  • 3:读取 statsfile,并对其进行更新。

statsfile 包含有关每个输入帧的信息,可以将其输入到 x264 中以改善输出。这个想法是您运行第一次通过以生成 statsfile,第二次通过将创建视频的优化编码。改进主要来自更好的速率控制。

另请参阅:statsbitrate

stats

[edit | edit source]

默认值:“x264_2pass.log”

设置 x264 将从中读取/写入 pass statsfile 的位置。

另请参阅:pass

默认值:“blurCplx^(1-qComp)”

设置 x264 将使用的速率控制方程。不要更改此项。

另请参阅:qcompcplxblurqblur

qcomp

[edit | edit source]

默认值:0.60

量化器曲线压缩因子。0.0 => 常数比特率,1.0 => 常数量化器。请注意,自适应量化部分取代了 qcomp 的效果,x264 将在内部提高 qcomp 以根据自适应量化强度进行补偿。

rceqcplxblurqblur

cplxblur

[edit | edit source]

默认值:20

对量化器曲线应用给定半径的高斯模糊。这意味着分配给每个帧的量化器在时间上与其邻居模糊,以限制量化器波动。

另请参阅:rceqqcompqblur

qblur

[edit | edit source]

默认值:0.5

在曲线压缩之后,对量化器曲线应用给定半径的高斯模糊。不是一个非常重要的设置。

另请参阅:rceqqcompcplxblur

zones

[edit | edit source]

使用此选项,您可以为视频的不同部分指定不同的 CRF 速率。例如,您为视频的整个长度指定 CRF=20,但您想从 27000 到 35000 使用 CRF=18.5,从 44000 到 49000 使用 CRF=16.5,从 75000 到 77500 使用 CRF=17.5,等等。此选项基于帧号

这是格式

zones=FromFrameA,ToFrameB,crf=18.5/FromFrameC,ToFrameD,crf=16.5/FromFrameE,ToFrameF,crf=17.5/...

zones=27000,35000,crf=18.5/44000,49000,crf=16.5/75000,77500,crf=17.5/...

qpfile

[edit | edit source]

对标准速率控制进行手动覆盖。指定一个文件,该文件提供每帧的量化器和帧类型。格式为“framenum frametype quantizer”。例如

0 I 18 < IDR (key) I-frame
1 P 20 < P-frame
2 B 22 < Referenced B-frame
3 i 21 < Non-IDR (non-key) I-frame
4 b 18 < Non-referenced B-frame

分析

[edit | edit source]

partitions

[edit | edit source]

默认值:“p8x8,b8x8,i8x8,i4x4”

h264 视频在压缩期间被分成 16x16 的宏块。这些块可以进一步分成更小的分区,这就是此选项控制的内容。

使用此选项,您可以启用各个分区。分区按帧类型启用(即 I、P、B)。可用的分区是:p8x8、p4x4、b8x8、i8x8、i4x4

  • I:i8x8、i4x4
  • P:p8x8(也启用 p16x8/p8x16)、p4x4(也启用 p8x4/p4x8)
  • B:b8x8(也启用 b16x8/b8x16)

您也可以设置“none”或“all”。

p4x4 通常没什么用,并且速度成本与最终质量收益的比率极高。

另请参阅:8x8dct

direct

[edit | edit source]

默认值:“spatial”

设置“直接”运动向量的预测模式。有两种模式可用:“spatial”“temporal”。您也可以选择“none” 以禁用直接 MV,以及 “auto” 以允许 x264 根据需要在两者之间切换。如果您设置 auto,x264 会在编码结束时输出有关使用情况的信息。“auto”在 2pass 编码中效果最好,但也能在单次通过编码中工作。在第一次通过自动模式下,x264 会保留每个方法迄今为止执行情况的运行平均值,并从该平均值中选择下一个预测模式。请注意,只有在第一次通过时启用了自动功能,您才应该在第二次通过时启用它;如果没有,第二次通过将默认使用 temporal。Direct none 会浪费比特,强烈建议不要使用它。

建议:“auto”

direct-8x8

[编辑 | 编辑源代码]

默认值:-1

设置直接预测模式的大小。启用 direct-8x8 推断(在大多数级别上默认启用)可能会在与 8x8dct 一起使用时略微提高质量。

默认:未设置

允许 B 帧中的引用之间进行非对称加权。h264 允许你对 B 帧中的引用进行“加权”,这使你能够改变每个引用对预测图片的影响程度。通常推荐用于电影素材,可能对动画素材没有用。

默认值:“hex”

设置全像素运动估计方法。有四个选择

  • dia(菱形)是最简单的搜索,它从最佳预测器开始,检查向上、左、向下和向右一个像素处的运动向量,选择最佳的,并重复此过程,直到它不再找到任何更好的运动向量。
  • hex(六边形)包含类似的策略,只是它使用 6 个周围点的范围 2 搜索,因此得名。它比 dia 更有效,速度几乎一样快,因此是通用编码的良好选择。
  • umh(不均匀多六边形)比 hex 慢很多,但会搜索一个复杂的多六边形模式,以避免错过难以找到的运动向量。与 hex 和 dia 不同,merange 参数直接控制 umh 的搜索半径,允许用户增加或减少宽搜索的大小。
  • esa(穷举)是在最佳预测器范围内的整个运动搜索空间中进行高度优化的智能搜索。在数学上等同于在该区域中搜索每个运动向量的暴力方法,但速度更快。但是,它仍然比 UMH 慢很多,收益并不太大,因此对于日常编码来说并不特别有用。
  • tesa(变换穷举)是一种算法,它试图近似运行 Hadamard 变换比较在每个运动向量的效果;类似于穷举,但稍微好一点,稍微慢一点。

另见:merange

默认值:16

merange 控制运动搜索的最大范围。对于 hex 和 dia,这被限制在 4 到 16 之间,默认值为 16。对于 umh 和 esa,它可以增加到默认值 16 以上,以允许更广泛的运动搜索,这在 HD 素材和高速运动素材上很有用。请注意,对于 umh、esa 和 tesa,增加 merange 会显着减慢编码速度。

另见:me

默认值:511.75

设置任何一个运动向量的最大范围。默认值为 h264 标准中指定的最大值。它不依赖于级别或配置文件,因此不要修改它。

mvrange-thread

[编辑 | 编辑源代码]

默认值:6

设置亚像素估计复杂度。数字越大越好。级别 1-5 仅控制亚像素细化强度。级别 6 为模式决策启用 RDO,级别 8 为运动向量和帧内预测模式启用 RDO。RDO 级别比之前的级别慢得多。

  1. QPel SAD 1 次迭代
  2. QPel SATD 2 次迭代
  3. MB 上的 HPel 然后 QPel
  4. 始终 QPel
  5. 多 QPel + bime
  6. I/P 帧上的 RD
  7. 所有帧上的 RD
  8. I/P 帧上的 RD 细化
  9. 所有帧上的 RD 细化
  10. QP-RD(需要 --trellis=2,--aq-mode > 0)

默认值:1.0:0.0

第一个数字是 Psy-RDO 的强度(需要 subme>=6 才能激活)。第二个数字是 Psy-Trellis 的强度(需要 trellis>=1 才能激活)。请注意,Trellis 仍然被认为是“实验性的”,并且几乎可以肯定对至少是卡通片来说是一件坏事。

mixed-refs

[编辑 | 编辑源代码]

默认:未设置

允许在每个 8x8 分区而不是每个宏块的基础上选择引用。这在使用多个引用帧时会提高质量,尽管会带来一些速度损失。

另见:ref

no-chroma-me

[编辑 | 编辑源代码]

默认:未设置

通常,运动估计使用亮度和色度平面。这会禁用色度运动估计,以提高速度。

建议:默认

默认:未设置

自适应 8x8 DCT 允许在 I 帧中智能地自适应使用 8x8 变换。

推荐:启用

默认:未设置

执行格状量化以提高效率。在宏块上提供速度和效率之间的良好折衷。在所有决策上进一步降低速度。

推荐:1(在宏块上)

注意:需要 CABAC

no-fast-pskip

[编辑 | 编辑源代码]

默认:未设置

禁用 P 帧上的早期跳过检测。快速跳过检测会提高速度,但可能会在纯色区域或轻微渐变区域(例如黑暗场景或天空)中造成轻微的块状感。

推荐:启用

no-dct-decimate

[编辑 | 编辑源代码]

默认:未设置

禁用 P 帧上的系数阈值。

建议:默认

默认:未设置

执行快速降噪。根据此值估计胶片噪声,并尝试通过在量化之前删除小细节来消除噪声。这可能无法与良好的外部降噪滤波器相匹配,但它执行速度非常快。

推荐:默认值或(100 到 1000 用于降噪)

deadzone-inter/intra

[编辑 | 编辑源代码]

默认:未设置

设置帧间/帧内亮度量化死区的尺寸。死区应该在 0 到 32 的范围内。死区值设置了 x264 将任意丢弃的精细细节级别,而不会尝试保留。非常精细的细节既难以看到又难以编码,在不尝试保留的情况下丢弃这些细节可以停止在如此低回报的视频部分浪费比特。

建议:默认

默认值:Flat(未设置)

从内置的 flat 或 jvt 预设设置自定义量化矩阵。

建议:默认

另见:cqmfile

默认:未设置

从指定的兼容 JM 的文件中设置自定义量化矩阵。会覆盖其他任何 --cqm* 选项。

建议:默认

另请参阅: cqm

cqm4* / cqm8*

[编辑 | 编辑源代码]

默认:未设置

  • --cqm4: 设置所有 4x4 量化矩阵。需要使用以逗号分隔的 16 个整数列表。
  • --cqm8: 设置所有 8x8 量化矩阵。需要使用以逗号分隔的 64 个整数列表。
  • --cqm4i, --cqm4p, --cqm8i, --cqm8p: 设置亮度和色度量化矩阵。
  • --cqm4iy, --cqm4ic, --cqm4py, --cqm4pc: 设置单个量化矩阵。cqm8 也有相同开关。

建议:默认

输入/输出

[编辑 | 编辑源代码]

默认:未设置

指定输出文件名。

建议: 使用自定义输出文件名,例如“压缩视频.mp4”。

默认:未设置

以宽:高的形式指定样本纵横比。这对于编码变形视频很有用。

建议:默认

默认:未设置

指定视频帧率。在大多数情况下,帧率将从输入视频流中检测到。

建议:默认

默认:未设置

指定要编码的第一帧,允许编码从源的任何点开始。

建议:默认

默认:未设置

指定要编码的最大帧数,允许编码在到达源结尾之前结束。

建议:默认

默认值:自动检测

在输出比特流中设置级别标志(如 H.264 标准的附件 A 中所定义)。允许的级别包括 1、1b、1.1、1.2、1.3、2、2.1、2.2、3、3.1、3.2、4、4.1、4.2、5、5.1。如果您没有在命令行中添加--level,x264 将尝试自动检测级别。这种检测并不完美,如果您没有使用 VBV 控制来限制最大比特率,则可能会低估级别。

如果打算在除 HTPC 之外的任何消费级产品上播放,则级别 4.1 通常是最大支持级别(例如 Xbox 360、PlayStation 3、Popcorn Hour A-100 媒体扩展器)。PC 上基于 GPU 的 DXVA 解码器也具有 4.1 的最大级别。蓝光和高清 DVD 也是级别 4.1。

请注意,x264 将此设置视为仅输出标志。它不会采取任何措施来确保符合您指定的级别。

建议 4.1

另请参阅: ref

默认:未设置

显示每个编码帧的统计信息。

建议:默认

默认:未设置

在编码期间显示进度指示器。

建议:默认

默认:未设置

启用静音模式,使 x264 的状态消息静音。

建议:默认

默认:未设置

禁用 PSNR 计算。阻止在完成时报告的 PSNR 计算。会略微提高速度。

推荐:启用

默认:未设置

禁用 SSIM 计算。阻止在完成时报告的 SSIM 计算。会略微提高速度。

推荐:启用

默认值:检测到的逻辑 CPU 数量的 1.5 倍

通过使用多个线程在多核系统上提高速度来启用并行编码。以前,这种线程处理基于切片编码模型,其中视频以n个切片进行编码(其中 n == 线程)。从 r607 开始,这种模型已更改为无切片线程处理,其中“原子单元”现在是宏块行。本节的其余部分仅指后者。

除非使用非常高的线程数(例如,超过 16 个),否则多线程带来的质量损失几乎可以忽略不计。

默认设置提供了或多或少最佳的速度。如果您想减少质量损失,请使用一个线程(不推荐,除非所有其他设置都已最大化)。

建议: 自动

另请参阅: 线程输入

thread-input

[编辑 | 编辑源代码]

默认:未设置

在与编码过程不同的线程中解码输入视频。当线程 > 1 时隐式启用。

建议: 当存在多个逻辑 CPU 时启用。

non-deterministic

[编辑 | 编辑源代码]

默认:未设置

略微提高 SMP 的质量,但会降低可重复性。不适用于一般用途。

建议:默认

另请参阅: 线程

默认:未设置

禁用所有 CPU 优化。适用于调试或故障排除。

建议:默认

visualize

[编辑 | 编辑源代码]

默认:未设置

在编码视频上启用宏块类型可视化。适用于逐帧调试或分析。

建议:默认

默认:未设置

设置 SPS(序列参数集)和 PPS(图像参数集)ID 号。不适用于一般用途。

建议:默认

默认:未设置

使用访问单元分隔符。不适用于一般用途。

建议:默认

Settings in Patches

[编辑 | 编辑源代码]

旧设置

[编辑 | 编辑源代码]

帧类型选项

[编辑 | 编辑源代码]

码率控制

[编辑 | 编辑源代码]

自 r996 版本起移除,现在在 subme >= 7 时自动启用

默认:未设置

subme 等级高于 5 时,默认情况下只影响 I 帧和 P 帧。将其设置为启用 B 帧上的 RDO 计算。

另请参见:subme

自 r996 版本起移除,现在在 subme >= 5 时自动启用

默认:未设置

启用对 B 帧中两个运动向量的联合优化。双向运动估计在对双向 B 帧进行编码时,会进行额外的正向和反向矢量搜索,从而提高质量。

注意:不影响以直接/跳过(无运动矢量)、正向(指向过去参考的 1 个 MV)、反向(指向未来参考的 1 个 MV)编码的 B 帧。

推荐:启用

subme (旧)

[编辑 | 编辑源代码]

自 r996 版本起更改

subme 1~6 保持不变

新的 subme 7 == 旧的 subme 6 + b-rdo

新的 subme 8 == 旧的 subme 7 + b-rdo

新的 subme 9 == 不存在,B 帧中的 RD 精细化是全新的。

默认:5(r970 之前),6(r970 及以后)

设置子像素估计复杂度。数字越大越好。1-5 级只控制子像素细化的强度。6 级启用模式决策的 RDO,7 级启用运动矢量和帧内预测模式的 RDO。这两个 RDO 级都比之前的级别慢得多。

另请参见

[编辑 | 编辑源代码]
华夏公益教科书