硬解之后,NVIDIA Ada架构GPU新增AV1编码

描述

AV1 是新的黄金标准视频格式,与旧的 H.264 和 H.265 格式相比具有更高的效率和质量。它是开放媒体联盟标准化的最新免版税高效视频编码器。

NVIDIA Ampere 架构引入了硬件加速 AV1 解码,而最新的 NVIDIA Ada Lovelace 架构支持 AV1 编码和解码。NVIDIA Ada 架构还恢复了对每个 GPU 多个编码器的支持(每个 GPU 最多三个编码器和四个解码器),与前几代相比实现了更高的吞吐量。

编码器

▲表1 RTX 工作站 GPU 的 AV1 编码情况对比

编码器

▲表2 RTX 工作站 GPU 的 AV1 解码情况对比

NVIDIA NVENC AV1 性能

与 H.264 和 HEVC 相比,NVIDIA NVENC AV1 提供了更高的压缩效率和更好的性能。为了量化质量改进,NVIDIA 研究了 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。

这意味着在 1080p@60fps 下,AV1 比 H.264 以类似的质量节省了 40% 的比特率。对于 H.264 上预设的给定低延迟质量,比特率增益高达 40%,表示在 1080p 5 Mbps 流式视频的两小时内,超过 1.8 GB 的保存数据。在 720p 、1440p 和 4K 时观察到类似的比特率节省。

编码器

▲图1 NVENC AV1 和 NVENC H.264 的 PSNR 与比特率。从100多个视频中收集的平均数据。

VMAF score

VMAF 是一种视频质量度量,与人类对流视频质量的感知高度相关。图 2 中绘制的 VMAF 分数是用用于 PSNR 评估的相同视频集收集的。NVENC AV1 在质量方面优于 NVENC H.264 。AV1 在低比特率下的性能优于 H.264 ,因此在苛刻的 QoS 场景中提供了更好的视觉质量。对于感知视频质量,H.264 和 AV1 编码视频之间的差距随着比特率的增加而减小,正如预期的那样。

编码器

▲图2 随着 NVENC AV1 和 NVENC H.264 的比特率提高,感知视频质量( VMAF )提高。

跨分辨率/预设的每秒帧数性能

NVENC 性能随着每一代的发展而稳步提高。NVIDIA Turing 和 NVIDIA Ampere GPU 架构均为每个芯片一个编码器,而 NVIDIA Ada 架构可支持每个芯片最多三个编码器。

通过 NVIDIA Ada 架构,驱动程序自动处理多个编码器之间的负载平衡。这使得任何应用程序都可以利用 NVENC,而无需任何特殊代码,从而实现更高的编码器吞吐量。但是,吞吐量受时钟、硬件性能限制和可用内存的限制。

NVENCODE API 公开了几种预设、速率控制模式和调谐信息模式,用于针对不同的使用情况对硬件进行编程。这些参数的组合使得能够以不同的质量和性能级别进行视频编码。这使应用程序能够实现所需的质量,而不是在粒度级别上进行编码性能权衡。

编码器

▲表3 以2160p分辨率编码每秒1帧( fps )的 NVENC 。分别在 NVDCLK 为1485MHz和1905 MHz的 A10 ( NVIDIA Ampere 架构)和 L40 ( NVIDIA Ada Lovelace 架构)上进行测量。

Max resolution support

表4 显示了 AV1、HEVC 和 H.264 的最大分辨率支持。NVIDIA Ada 架构 GPU 是第一代支持 AV1 和 HEVC 的 10 位 8K60 编码的 GPU。

编码器

▲表4 支持 NVENC AV1、H.265 和 H.264 的编码分辨率

除了 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 包含多个编码器,则将每个部件发送到不同的编码器。这有助于提高整体编码性能。

在表 5 所示的条件下,仅在高分辨率下自动启用此功能。注意,与在单个编码器上对整个帧进行编码所获得的质量相比,在独立编码器上分割帧可能会导致次优的质量。因此,并非在所有预设和分辨率中都启用这种性能改进方法。

编码器

▲表5 确定何时启用拆分编码的预设和调整标准

如果启用了 NVENC 中的某些功能,则无论是否满足表 5 中列出的调谐和预设条件,分割编码都会自动禁用。以下列出了与拆分帧编码不兼容的功能。

HEVC

加权预测

Alpha 层

子帧模式

比特流输出到视频存储器

图片定时/缓冲周期 SEI 消息插入 DX12 路径

AV1

位流输出到视频存储器

多个 NVENC 实现更高吞吐量

某些 NVIDIA Ada 架构 GPU 具有多个 NVENC ,支持并行编码更多的流。对单个视频流进行编码时,帧会按顺序发送到不同的 NVENC 。因此,使用多个 NVENC 不会提高编码单个视频流时的吞吐量,但可以提高并行编码两个或多个视频流时总吞吐量。在具有多个 NVENC 的 GPU 上,来自不同流的不同帧将在多个 NVenc 之间调度,保持所有 NVENC 充分利用,从而提高吞吐量。

更多 NVENC 也有助于视频编辑工作流程,其中不同的独立部分(跨 GOP 边界分割)可以发送到不同的 NVENC 。要编码的视频的这种分割可以由用户手动执行(例如,具有场景变化或不同剪辑的片段被放在一起)或由应用程序自动执行。

例如,视频可以分为三个时隙:t0– t1.,t1.– t2.,和 t2.– t3.,其中 t0,t1.,t2., 和 t3.是视频中单调增加的次数。由于多个编码器,较小的视频可以并行编码,从而导致较高的总编码吞吐量。

批量编码是一种利用多个编码器的功能。此功能对于代码转换类型的工作负载非常有用。转码包括对输入编码流进行解码、缩放和以所需格式和分辨率重新编码。这在 NVIDIA Ada 架构 GPU 上很容易实现,因为驱动程序自动处理解码流的负载平衡,并在编码器之间分配工作。

支持 FFmpeg 中的 AV1

FFmpeg 是广泛用于视频和音频转码的最流行的多媒体转码工具。FFmpeg 支持 NVENC 加速 AV1 编码和 NVDEC 加速 AV1 解码。使用 FFmpeg 的应用程序现在可以使用 GPU 加速编码和解码。

与现有编解码器相比,AV1 的卓越 PSNR 、VMAF 、比特率节省和分割编码性能使其成为视频编码的一个非常有吸引力的选择。NVIDIA ADA GPU 支持 AV1,可通过最新版本的 NVIDIA Video Codec SDK 访问。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分