为 Capped CRF 编码选择最佳 CRF 值

扬·奥泽
2020 年 2 月 3 日

在一个充满不稳定压缩文章的博客中,这可能是所有文章中最不稳定的文章。如果您不使用封顶 CRF 编码,或考虑使用相同的编码,则几乎肯定不会对它感兴趣。但是,如果您使用上限 CRF 编码(用于恒定速率因子),您几乎肯定会发现它很有趣,甚至可能很有启发性。

快速背景说明。去年年底,我咨询了一家大型 OTT 商店,该商店对编码阶梯中的顶级文件使用了 CRF 值为 19 的上限 CRF 编码。下面显示的大部分分析都是针对这个客户的(他批准了我在一篇文章中的讨论)。我还没有写这篇文章,因为我觉得它对大多数读者来说太晦涩了。

然而,今天早上,我从 Vimeo 下载了一个视频,并注意到它们使用 CRF 值为 20 的上限 CRF 进行编码,您可以在下面的 MediaInfo 中看到。为什么我在玩 Vimeo?因为他们在几个月前大张旗鼓地承诺,他们将使用 AV1 编解码器对产品选择进行编码。我会定期下载一个文件,看看是不是这样;到目前为止,还没有 AV1 编码。这并不意味着 Vimeo 不使用 AV1,可能是我的下载工具根本没有捕获 AV1 编码。

但是,我确实注意到 Vimeo 使用的是 CRF 20,恕我直言,这是次优的,并促使本文复活。没有对 Vimeo 的不尊重,他拥有一支出色的编码专业团队。但这就是我的想法以及原因。

作为背景,大多数制作人使用封顶capped CRF 作为 DIY per-title 按标题编码技术。当您使用 CRF 和无上限进行编码时,FFmpeg 会优先考虑质量而不是比特率,并改变比特率以提供指定的质量,范围从 1 到 51,较低的数字提供更高的质量。请参阅此处以获取对包括 FFmpeg 命令行在内的封顶 CRF 的完整说明。CBR 和 VBR 编码相反,并调整质量以满足指定的数据速率。

当然,您不能将仅 CRF 编码用于流媒体,因为限制数据速率是可交付性的关键。因此,您添加上限或最大比特率。要生成上限 CRF,您需要指定 CRF 值以及最大速率和缓冲区大小,它们也在上面的 MediaInfo 屏幕中突出显示。本质上,Vimeo 告诉 FFmpeg 编码为 20 的 CRF 值,最大速率为 5500,VBV 缓冲区为 15000(有关 VBV 缓冲区的更多信息,请参见此处)。

我下载的文件之一是 Light Speed,它显示在下面的 Bitrate Viewer 中。您会看到平均比特率约为 4664 kbps,但平均数据速率(由淡蓝线显示)大部分时间都在 5 Mbps 以上。当线下方有足够的空间时,如那些由 CRF 控制的线所指向的区域,这意味着 CRF 正在设置质量级别。当数据速率被推向 5.5 Mbps 时,这是强制执行限制的上限。

可视化封顶 crf 编码

使用 CRF 20 有什么问题?好吧,如果您不关心在带宽上花费太多,那就没什么了。但是,如果您使用上限 CRF 来减少易于编码的视频的带宽,您可能可以使用更高的值(并提供略低的质量)并在没有人注意到的情况下减少带宽。

VMAF 93 = 足够好

VMAF 上的几个点,我后面会提到。首先,作为 RealNetworks 的 CTO Reza Rassool 在这里构建的,93分 的 VMAF 得分意味着“绝大多数观众 会发现内容 要么与原始内容无法区分,要么有明显但不烦人的失真。” 因此,如果您的分数为 93 – 95,则您的视频可能“足够好”。如果它更高,那么您就是在花钱来提供没人会注意到的额外质量。

关于 VMAF 的另一点是,使用 CRF 23 和 x264编码在我的书 Video Encoding by the Numbers 中使用的测试视频中的 VMAF 平均得分为 95.96,如下表所示。因此,如果您使用 CRF 20,几乎可以肯定您提供的 VMAF 质量高于 93-95(因为较低的 CRF 值提供更高的质量)。这意味着您分发的所有视频的数据速率可能太高,或者至少比它需要的要高。

您可以在下表中看到这一点,其中显示了以 CRF 19 编码的大多数相同剪辑,上限为 5 Mbps。数据速率主要由 CRF 值控制的易于编码的视频的 CMAF 分数为 96.90,这是不必要的高。由上限控制的难以编码的视频仍然在 93 以北,因此它们的质量还可以。

当您使用相同上限的更高 CRF 值时会发生什么?如下所示(单击表格以全分辨率查看)。在 CRF 23 中,您将易于编码的视频的数据速率降低了 33%,同时将 VMAF 从 96.9 降低到 96.15,这是无关紧要的。因此,您已经实现了按标题编码的一个关键目标,即降低易于编码的视频的数据速率。

对于难以编码的视频,CRF 19 和 CRF 23 之间的数据速率和质量增量要低得多,因为数据速率上限控制这些剪辑的比特率和质量,而不是 CRF。尽管如此,在 CRF 23 下,您将比特率降低了 8.57%,但只会将 VMAF 分数从 94.68 降低到 94.41。

最重要的是,如果您使用上限 CRF 进行编码并且您的 CRF 值低于 23,那么您可能会在易于编码的剪辑上浪费带宽。在 CRF 23 上运行一些测试,看看这如何影响带宽和显着的质量。

有关计算和使用视频质量指标的更多信息,我有一个视频课程,其中包含超过 3 小时的视频教学。有关课程的更多信息,单击此处.

03-05 20:33