如果我在 x264 (FFmpeg) 中使用低于 17/18 的 CRF(恒定速率因子)值,我会得到任何视觉上的好处吗?除了大小,会有什么不同吗?
CRF 17/18 在视觉上是无损的。
CRF 0 表示帧的每个像素都将由其自身的数据确定。CRF 17/18 意味着,帧的每个像素将由其自己的数据确定,或者如果它们相同则由前一帧确定。
所以在视觉上两者都是一样的。那么较低值的CRF(0-16)编码有什么用呢?
我已经测试了大部分可用的 CRF 值(包括 CRF 0)。我使用“CRF 0”编码了一部 1080P 蓝光电影。输出最终比蓝光源大 2.5 倍 (110GB)。
据我所知,我没有看到使用低于 CRF17/18 的 CRF 值的理由。而且我无法在任何地方找到证明使用较低 CRF 值的理由。那么较低的 CRF 值有什么好处呢?
在 CRF 17/18 中会有更多的生成损失,而在较低的 CRF 值编码中会有更少的生成损失吗?
简短的回答是:不,您不太可能获得视觉上的好处,或者至少大多数人不会注意到。
为了简单起见,假设使用 17 的 CRF 等于使用 17 的恒定QP。QP越低,比特率越高,反之亦然。QP 0表示没有量化损失;QP 51 是最大可能值(对于 8 位 H.264)。这种通过量化减少信息的技术已有数十年历史,是大多数有损视频压缩算法的基础。问题是:压缩收益超过质量损失的主观点在哪里?
主观测试表明,对于使用 压缩的 UHD 视频,用户观看一个又一个压缩剪辑并对其质量进行
libx264
评分,平均意见得分在 ~30–40 Mbit/s 左右饱和(使用 2-pass 编码,中等预设)。这意味着人类受试者无法分辨(或不会给出更高的评级)以更高比特率编码的剪辑。如果 CRF 低于 17,您通常会达到 50 Mbit/s 或更高,具体取决于内容。因此,使用较低的 CRF 通常是浪费比特,人类不会注意到它。*因此,存在一个感知阈值,在该阈值之后使用较低的 QP 不会给您带来更好的质量——它只会意味着您会浪费比必要更多的比特。这个阈值取决于内容的空间特征:有些东西比其他东西更容易压缩。那里绝对没有硬性阈值,但大多数建议都在 H.264 的 QP/CRF 17–18 左右徘徊。
重要的是要澄清您可以选择指定这些特定的 QP/CRF 参数,因为它们在技术上是可行的,而不是因为它们有内在的用途。就像您可以以高转速和尾气驾驶汽车一样,您可以以不合理的高比特率对视频进行编码,这样就可以完成工作。
选择高于感知阈值的 QP/CRF 值的可能原因是什么?
您的目标是针对特定内容找出与 QP 相关的感知阈值。(这里的例子。)
您希望以尽可能最好的质量存档视频并且不关心文件大小,但您不希望拥有非常大的文件(即,比原始视频的大小大得多)。
你知道你的视频在某个阶段会再次进行有损压缩,在这种情况下,它有助于在第一阶段保留尽可能多的细节,以免产生更多的损失。
既然你问过后一点:会有多少生成损失取决于原始视频中的空间细节量以及在任何未来编码阶段应用的量化量。因此,您在第一步中丢弃的越少,在以后的任何步骤中保持质量的机会就越大。
那么,较低的 QP/CRF 值有什么用呢?不多,至少对于普通用户而言。
* 当然,这取决于测试方法。有些测试范例比我所描述的范例更为重要。例如,如果您显示未压缩剪辑和压缩版本之间的明确比较,用户可以检测到更细粒度的差异。基于 JND 的测试也是如此。
如果您不想丢失太多细节,这是值得的。如果你不关心这个,那又何必呢。这取决于您使用的来源。例如,如果您正在编码的节目需要高比特率来处理动作场景,则您必须满足 crf 的要求以对其进行补偿。一般来说,如果你对任何东西进行编码,并且希望细节损失最小(假设你不关心大小),crf-14 或 crf-15 是不错的选择。
是的,只有 CRF 12 及更低版本是“透明的”。如果您从无损源转换或下转换(超高清蓝光到高清蓝光),请使用它。大小将与实际的蓝光 remux 相当。如果你使用任何 12 以上的 CRF,那么你显然关心存储空间并且必须接受细节丢失。