AV1 是新的黄金标准视频格式,与旧的 H.264 和 H.265 格式相比具有更高的效率和质量。它是开放媒体联盟标准化的最新免版税高效视频编码器。
NVIDIA Ampere 架构 引入了硬件加速 AV1 解码。 NVIDIA Ada Lovelace 架构 支持 AV1 编码和解码。 NVIDIA Ada 架构还恢复了对每个 GPU 多个编码器的支持(每个 GPU 最多三个编码器和四个解码器),与前几代相比实现了更高的吞吐量。
NVIDIA NVENC AV1 性能
与 H.264 和 HEVC 相比, NVIDIA NVENC AV1 提供了更高的压缩效率和更好的性能。为了量化质量改进,我们研究了 AV1 和 H.264 的峰值信噪比( PSNR )和视频多方法评估融合( VMAF )分数。 PSNR 和 VMAF 是经常用于衡量编码质量的视频质量度量。
PSNR 评分
PSNR 是量化图像重建质量的分贝值。它是原始图像或视频信号的最大功率与通过压缩引入的噪声之间的比率。如图 1 所示,在相同比特率下,与 NVENC H.264 相比, NVENC AV1 编码的 PSNR 高出约 1.5-2 dB 。换句话说,为了实现相同的 PSNR , H.264 编码需要比 AV1 高得多的比特率。例如,与 H.264 的 11Mbps 相比, AV1 在 7Mbps 下实现 42dB PSNR 。
这意味着在 1080p60 下, AV1 比 H.264 以类似的质量节省了 40% 的比特率。对于 H.264 上预设的给定低延迟质量,比特率增益高达 40% ,表示在 1080p 5 Mbps 流式视频的两小时内,超过 1.8 GB 的保存数据。在 720p 、 1440p 和 4K 时观察到类似的比特率节省。
VMAF score
VMAF 是一种视频质量度量,与人类对流视频质量的感知高度相关。图 2 中绘制的 VMAF 分数是用用于 PSNR 评估的相同视频集收集的。 NVENC AV1 在质量方面优于 NVENC H.264 。 AV1 在低比特率下的性能优于 H.264 ,因此在苛刻的 QoS 场景中提供了更好的视觉质量。对于感知视频质量, H.264 和 AV1 编码视频之间的差距随着比特率的增加而减小,正如预期的那样。
视频 1 显示了在 NVIDIA Ada Lovelace 架构 GPU 上编码的 AV1 视频与使用 x264 软件编码的 H.264 视频的质量比较。 H.264 视频使用 30 Mbps 的中等预设进行编码,而 AV1 视频使用高性能预设以 18 Mbps 进行编码。两个视频的质量相当。 AV1 编码器的吞吐量为 500 fps ,几乎比 x264 编码器快 9 倍。
跨分辨率/预设的每秒帧数性能
NVENC 性能随着每一代的发展而稳步提高。 NVIDIA Turing 和 NVIDIA Ampere GPU 架构均为每个芯片一个编码器,而 NVIDIA Ada 架构可支持每个芯片最多三个编码器。
通过 NVIDIA Ada 架构,驱动程序自动处理多个编码器之间的负载平衡。这使得任何应用程序都可以利用 NVENC ,而无需任何特殊代码,从而实现更高的编码器吞吐量。但是,吞吐量受时钟、硬件性能限制和可用内存的限制。
NVENCODE API 公开了几种预设、速率控制模式和调谐信息模式,用于针对不同的使用情况对硬件进行编程。这些参数的组合使得能够以不同的质量和性能级别进行视频编码。这使应用程序能够实现所需的质量,而不是在粒度级别上进行编码性能权衡。
Max resolution support
表 2 显示了 AV1 、 HEVC 和 H.264 的最大分辨率支持。 NVIDIA Ada 是第一代 GPU ,支持 AV1 和 HEVC 的 10 位 8K60 编码。
除了 8 位 H.264 、 8 位和 10 位 HEVC 编码 . 之外,专用编码器硬件 NVENC 还可以执行 8 位和 8 位 AV1 编码。有关 NVENC 功能的更多详细信息,请参阅 NVIDIA Hardware Video Encoder documentation 。
硬件加速视频编码和解码功能可分别通过 NVENCODE 和 NVDECODE API 访问,它们是 NVIDIA Video Codec SDK 的一部分。
NVIDIA 视频编解码器 SDK 12.0 功能
2022 年 11 月发布的视频编解码器 SDK 12.0 包含对 NVIDIA Ada Lovelace GPU 硬件的支持,以及以下详细介绍的新功能。
Split encoding 8K60
NVIDIA Ada GPU 上的视频编解码器 SDK 12.0 支持一种称为 AV1 和 HEVC 的分割帧编码功能,该功能可以使用多个编码器(只要可用)对分辨率大于 4K 的帧进行编码。使用此功能,框架将分为两部分。如果 GPU 包含多个编码器,则将每个部件发送到不同的编码器。这有助于提高整体编码性能。
在表 3 所示的条件下,仅在高分辨率下自动启用此功能。注意,与在单个编码器上对整个帧进行编码所获得的质量相比,在独立编码器上分割帧可能会导致次优的质量。因此,并非在所有预设和分辨率中都启用这种性能改进方法。
Preset Tuning info |
p1 (fastest) | p2 | p3 | p4 | p5 | p6 | p7 (slowest) |
High quality | Split frame | Split frame | Normal | Normal | Normal | Normal | Normal |
Low latency | Split frame | Split frame | Split frame | Split frame | Normal | Normal | Normal |
Ultra-low latency | Split frame | Split frame | Split frame | Split frame | Normal | Normal | Normal |
如果启用了 NVENC 中的某些功能,则无论是否满足表 3 中列出的调谐和预设条件,分割编码都会自动禁用。以下列出了与拆分帧编码不兼容的功能。
HEVC
- 加权预测
- Alpha 层
- 子帧模式
- 比特流输出到视频存储器
- 图片定时/缓冲周期 SEI 消息插入 DX12 路径
AV1
- 位流输出到视频存储器
多个 NVENC 实现更高吞吐量
某些 NVIDIA Ada GPU 具有多个 NVENC 。这支持并行编码更多的流。对单个视频流进行编码时,帧会按顺序发送到不同的 NVENC 。因此,使用多个 NVENC 不会提高编码单个视频流时的吞吐量,但可以提高并行编码两个或多个视频流时总吞吐量。在具有多个 NVENC 的 GPU 上,来自不同流的不同帧将在多个 NVenc 之间调度,保持所有 NVENC 充分利用,从而提高吞吐量。
更多 NVENC 也有助于视频编辑工作流程,其中不同的独立部分(跨 GOP 边界分割)可以发送到不同的 NVENC 。要编码的视频的这种分割可以由用户手动执行(例如,具有场景变化或不同剪辑的片段被放在一起)或由应用程序自动执行。
例如,视频可以分为三个时隙: t0– 吨1.,吨1.– 吨2.,和 t2.– 吨3.,其中 t0,吨1.,吨2., 和 t3.是视频中单调增加的次数。由于多个编码器,较小的视频可以并行编码,从而导致较高的总编码吞吐量。
批量编码是一种利用多个编码器的功能。此功能对于代码转换类型的工作负载非常有用。转码包括对输入编码流进行解码、缩放和以所需格式和分辨率重新编码。这在 NVIDIA Ada GPU 上很容易实现,因为驱动程序自动处理解码流的负载平衡,并在编码器之间分配工作。
支持 FFmpeg 中的 AV1
FFmpeg 是广泛用于视频和音频转码的最流行的多媒体转码工具。 FFmpeg 支持 NVENC 加速 AV1 编码和 NVDEC 加速 AV2 解码。使用 FFmpeg 的应用程序现在可以使用 GPU 加速编码和解码。
概括
与现有编解码器相比, AV1 的卓越 PSNR 、 VMAF 、比特率节省和分割编码性能使其成为视频编码的一个非常有吸引力的选择。 NVIDIA ADA GPU 支持 AV1 ,可通过最新版本的 NVIDIA Video Codec SDK 访问。