分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化

在本文中,我们将通过改变 CRF 值来观察 SVT-AV1 预置的性能,并展示客观质量(PSNR、VMAF、SSIM)、文件大小和编码速度的变化情况。

由谷歌、微软、Mozilla 和 Netflix 等多家行业巨头组成的开放媒体联盟(AOMedia)开发了开放且免版税的 AV1 视频编解码器。其主要目的是创建一种具有卓越压缩能力的编解码器,以取代 H.264 和 H.265/HEVC,同时考虑到世界正朝着更高分辨率的方向发展。

自 AV1 标准提出以来,已经有多个实施方案,如:

  • aomenc / libaom
  • SVT-AV1 (由Intel和Netflix开发,2020年被AOMedia采用)
  • rav1e by Xiph
  • 其他商业实施

我在本文中选择了 SVT-AV1,并将在一系列 CRF 值范围内评估其 “预设 “性能。目的是了解每个预设值在质量、大小、比特率、速度等方面的表现。

这篇探索性文章将不涉及 CBR、行/列平铺、多线程等问题。请订阅有关 SVT-AV1、rav1e、其他视频编解码器、速率控制模式和可视化分析的后续文章。

分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化

测试设置

我在 AWS EC2 c5.9xlarge 实例上运行了所有测试。以下是其规格:

  • Intel Xeon Platinum 8124M,支持 AVX-512 指令集。
  • 36 个 vCPU
  • 72GB 内存
  • 操作系统 Ubuntu 22.04 LTS

我使用 FFmpeg 和在 EC2 实例上本地编译的 SVT-AV1 编码器。我选择这种方法是因为这是我在设置中使用的方法,也是视频流行业中大多数公司使用的方法。

以下是 FFmpeg 和 SVT-AV1 的规格:

  • FFmpeg: N-111750-g9c694804fd-20230812
  • SVT-AV1:版本 1.6.0

最后,我使用了 Parkjoy(1080p,50fps)测试序列,该序列具有中度到高度的运动和大量草地/树木/纹理细节。

分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化
Parkjoy 测试序列 (1080p50)

实验方法

正如我在引言中提到的,本实验旨在观察 SVT-AV1 预置在改变 FFmpeg 中用于编码的 CRF 值时的性能。

如果您熟悉 FFmpeg,就会知道 “预设 “参数可通过完全打开/关闭或更改设置来控制用于压缩视频的编码工具。

  • 速度较慢 “的预设将花费大量时间来编码并生成质量上乘的视频!这是因为编码器将启用最广泛的工具集和最宽松的参数(如运动估计搜索范围、四分之一颗粒运动估计、OBMC 等)。
  • 相反,”快速 “预设则会迫使编码器放弃特定的编码工具来快速编码,从而牺牲视频质量。

这就是速度与质量之间的权衡!

SVT-AV1 预设值从 0 到 13 不等,您可以点击这里了解预设值及其启用/禁用的编码工具。我避开了 “13”,因为它只用于调试(来自官方文档)。我也避开了预设 0 和 1,因为根据我之前的测试,它们太慢了!

因此,我决定在本次分析中使用预置 2 – 12。

最后,以下是我的操作步骤:

  • 将预设值固定为 N(最小值 = 2,最大值 = 12)。 
  • 将 CRF 从 20 更改为 63,步长为 6
  • 对于每个编码,捕获 PSNR、VMAF、SSIM、文件大小、编码时间、编码 FPS 和比特率。
  • 评估所有可能的 CRF 值后,将预设更改为 N+1。

命令行和免责声明

我使用的 FFmpeg 命令行是一个简单的 1-pass AV1 编码:

ffmpeg -benchmark -i <input> -c:v libsvtav1 -crf <value> -preset N output.mkv

这个过程被封装到一个脚本中,该脚本会循环使用 CRF 和预设的所有组合,提取指标并生成图表。

我还想说的是,这些实验并不是为了生成 CBR、封顶 VBR 或测试 SVT-AV1 中的平铺或多线程工作原理,这些都是未来文章的主题。

本文旨在展示 SVT-AV1 在不同预设值和 CRF 值下的性能变化。

结果

通常情况下,当您查看视频编解码器的性能时,需要评估:

  • PSNR、SSIM 和 VMAF 等指标
  • 输出文件大小和生成的比特率
  • 编码速度(时间和 FPS)

这些因素将揭示您选择的编解码器和参数是否适合您的使用情况。

例如,24×7 新闻工作室可能希望快速编码和发布视频。该工作室可能愿意在视频质量上妥协(因为其内容的短暂性),以换取快速的周转时间。我与印度的新闻机构合作时就多次遇到过这种情况。

另一方面,像 Netflix 或 SonyLIV 这样的优质内容提供商则愿意投入更多时间对其内容进行编码,因为他们知道其最终用户期望的是优质内容,而且其内容的生命周期相当长!

视频质量、速度和文件大小之间总是存在权衡。因此,需要进行广泛的测试和评估,以选择正确的编解码器及其相关参数。

有鉴于此,让我们从 SVT-AV1 的编码速度开始看看结果。

SVT-AV1 预设的编码速度

我将从编码速度开始分析预设,并用它来证实我们继续进行的几点。请记住,我使用c5.9xlarge机器进行此测试。

旁注:您会注意到,我为每个指标以两种不同的方式绘制了相同的数据 – 这将在本文中继续进行。 

  • 在左侧子图中,我显示了 SVT-AV1 预设的指标变化,并在每条绘图线中保持 CRF 恒定。 
  • 在右侧的子图中,我显示了指标相对于 CRF 的变化,并在每条绘图线中保持预设不变。 

这是相同的数据——只是以两种不同的方式查看。

以下是所有 SVT-AV1 预设的编码 FPS 图,CRF 范围为 20 – 63。

分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化
图 1:使用 SVT-AV1 v1.6.0 对 Parkjoy 的 FPS 结果进行编码

结果是不言自明的:

  1. preset=12 最快,preset=2 最慢。这是预料之中的。
  2. 对于每个预设,随着 CRF 从 20 增加到 63,FPS 也会增加。这是因为更多编码工具被关闭,编码器对视频质量的关注度降低。

虽然性能取决于您用于编码的机器类型,但可以很安全地观察到预设 8 – 12 适用于快速编码(接近实时、实时或快于实时)。 

预设 2 – 4 相当慢,但这没关系,因为它们旨在以尽可能低的比特率和文件大小生成高质量视频。当预设 2 – 4 的速度与客观质量指标和文件大小结合起来时,它就更有意义了!我们稍后会看到。 

接下来,让我们继续讨论客观质量指标。 

PSNR、SSIM、VMAF 分数

以下是通过改变预设和 CRF 值得出的 SVT-AV1 客观质量得分(PSNR、VMAF、SSIM)。 

分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化
图 2:Parkjoy 的 VMAF 结果
分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化
图 3:Parkjoy 的 SSIM 结果
分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化
图 4:Parkjoy 1080p50 的 PSNR 结果

看看客观指标:

  1. 对于非常低的 CRF 值(大约 24 及以下),所有预设的 VMAF 分数相似,变化很小,并且肯定在 6 个 VMAF 点的 JND 经验法则之内。
  2. 然而,相同CRF范围的SSIM和PSNR数据存在明显差异。例如,在 CRF=24 时,预设 2 得分为 40dB,而预设 12 得分为 37.5dB。
  3. VMAF 图表告诉我们一些有趣且奇怪的事情 – 如果您希望 VMAF 分数大于 95,则可以使用高达 38 的 CRF 值,而不管预设如何

那么,这是否意味着您可以使用最高速度预设“12”,将 CRF 值设置为 38,并获得与预设=2(最慢模式)相当的视频?

VMAF 分数似乎同意这个假设!

然而,答案并不那么简单。除了视频质量之外,您还需要查看生成的文件的大小和比特率,以全面了解正在发生的情况。

这是下表中的数据片段:

预设CRF文件大小 (MB)比特率(kbps)峰值信噪比(分贝)SSIMVMAF时间(秒)FPS
2383226290.634.5930.95598.84826.60.6
12383932693.432.990.93695.906.181

以下是当 CRF 固定为 38 时的数据:

  • 预设 = 2 生成大小为 32 MB 且比特率为 26 Mbps 的文件
  • 预设 = 12 生成大小为 39 MB 且比特率为 32 Mbps 的文件
  • 预设 = 12 比预设 = 2 快 135 倍。 

因此,如果您使用预设 = 12,您将获得与预设 = 2 相同的视频质量 (VMAF) 和非常高的性能,但输出大约 19%,比特率高 18%。这将增加您的存储成本、CDN 交付成本、设备上下载存储以及缓冲的机会!值得思考的事情!

分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化
Parkjoy预设=2,CRF=38
分析 SVT-AV1 预设值: 尺寸、质量和速度与 CRF 变化
Parkjoy预设=12,CRF=38

从视觉上(主观)来看,两个序列(预设 = 2 和预设 = 12)之间存在差异,因为较低预设的输出比预设 = 2 显得更有颗粒感。从结构上讲,我们不会发现草地有太多问题,但人们肯定会在跑步的人周围看到很多颗粒和噪音(PSNR 似乎已经发现了这一点)。

注意:请在单独的选项卡中打开图像以便仔细查看。

为了更好地理解这一点,下面是另一个数据片断,预设值为偶数,CRF 固定为 26,以及相应的指标和数据点。

预设CRF文件大小 (MB)比特率 (kbps)峰值信噪比(分贝)SSIMVMAF时间(秒)FPS
2267562757.839.283比特率(kbps)99.709974.0940.5
4267562446.238.7270.97799.679147.6943.4
6267563023.038.4390.97599.56553.149.4
8268167342.437.9650.97399.50620.23725
10268671827.737.6770.9799.44610.52448
12269277138.936.8160.96599.2898.05262

从上表我们可以看出 

  • 预设=12 比预设=2 具有 124 倍的性能增益,但它们的 VMAF 分数仅相差 0.420。SSIM 也是如此(0.013 间隙),但 PSNR 在预设 = 2 时显示出约 2.5 dB 增益的差异。
  • 然而,如果您查看生成的文件大小和比特率,preset=2 的输出会小约 18.5%,这会显着影响整体业务指标!
  • 另一方面,如果您不担心文件大小并且需要快速周转时间,那么预设 10 和 12 或许值得一看。

现在看一下preset=6:它生成的文件的大小、比特率和客观指标与preset=2 类似。它的运行速度比预设=2 快 20 倍。

有了这个,人们可以开始建立一个论点,如果您想要一个在质量和速度之间提供良好权衡的预设,您可能需要考虑 [6, 8] 范围内的 SVT-AV1 预设。

SVT-AV1 预设用法

从结果来看,对于快速/实时/比实时更快的编码,可以放心使用 9 – 12 之间的预设值。这同样取决于您的服务器容量。据我观察,像 c5.4xlargec5.9xlarge 这样的 AWS EC2 实例可以提供高速编码,接近或超过实时,这取决于您的源/目标帧速率。

但是,如果您有更多空闲时间,预设值 6 可以让您在质量、文件大小和速度之间实现良好的权衡。使用 SVT-AV1 预设 6、7 和 8 将帮助您找到适合您的用例的适当平衡。

最后,少于 6 个的 SVT-AV1 预设将为您提供高质量的视频,但会占用大量计算时间和资源。

结论

我们通过改变预设值和 CRF 值来比较 SVT-AV1 预设视频编解码器的性能,从而结束对 SVT-AV1 预设视频编解码器的评估。对于愿意尝试 AV1 部署的团队来说,SVT-AV1 编解码器是一个不错的选择。

借助正确的预设、编码器设置和计算硬件,您可以使用 SVT-AV1 快速降低视频库的大小、存储和 CDN 交付成本。

在以后的文章中,我们将评估 SVT-AV1 与其他流行的视频编解码器,并研究特定编码器设置和视频类型的结果。此外,我们还将评估其CBR编码性能,并将其与其他编解码器和AV1实现进行比较。

作者:Krishna Rao Vijayanagar
编译自https://ottverse.com/analysis-of-svt-av1-presets-and-crf-values/

本文为原创稿件,版权归作者所有,如需转载,请注明出处:https://www.nxrte.com/jishu/31196.html

(0)

相关推荐

发表回复

登录后才能评论