计算机视觉/视频分析

采用分帧编码和 NVIDIA Ada Lovelace 架构的 8K60 视频编码

 

得益于摄像头和显示技术的进步,现在可以在 8K 分辨率和每秒 60 帧 (FPS) 下截取视频片段和玩游戏。RED Digital Cinema、Nikon 和 Canon 等主要的领先多媒体公司已经为消费者和专业市场推出了 8K60 摄像头。

在显示器方面,8K60 采用最新的 HDMI 2.1 标准,现已得到广泛应用,支持游戏显示器和智能电视。虽然 8K60 提供 惊人的画质和清晰度,但在传输和存储时消耗更多数据会带来巨大的成本。

因此,快速编解码器在弥合传感器和显示器之间的差距方面至关重要。为了促进 8K60 的广泛应用,NVIDIA Ada Lovelace GPU 架构提供了 NVENC 加速视频编码性能的引擎,同时保持高画质。(NVIDIA RTX 4090 和 4080 分别提供两个和三个 NVENC,而 NVIDIA RTX 6000 Ada Lovelace (L40) 也配备了 NVENC。)

实际上,与前几代产品相比,使用单个 GPU 时,这可以将编码性能提高一倍或三倍,从而实现 8K60 视频编码及以上。

本文将介绍如何使用分帧编码 (SFE) 技术利用 NVIDIA Ada Lovelace 架构中的多个可用 NVENC 来实现 8K60 视频编码性能。我们将探讨这种 SFE 技术如何在 4K 和 8K 分辨率下工作,以及如何通过 NVENCODE API 启用该技术。最后,我们将介绍一些基准测试,这些基准测试显示了这种技术在实际应用中的巨大性能优势。

分帧编码

SFE 是一种技术,它通过分割帧并使用 NVIDIA Ada Lovelace GPU 中存在的多个 NVENC 引擎对每个部分帧进行编码,从而在对单个视频序列进行编码时能够提高效率。这一技术已集成在 NVIDIA 视频编解码器 SDK 12.0 中。SFE 能够在可用的 NVENC 中有效地分割编码工作(图 1)。然而,到目前为止,SFE 是基于编码预设、调整信息和分辨率隐式启用的,以支持 HEVC 或 AV1 中的 8K 实时编码。(请注意,H.264 不支持 8K。)如需了解更多详情,请参阅 借助 AV1 和 NVIDIA Ada Lovelace 架构提高视频质量和性能

Diagram of two-way split-frame encoding with NVENCODE API, NVENC 0, and NVENC 1 (top to bottom).
图 1.双向分帧编码

通过 NVIDIA Video Codec SDK 12.1,您可以启用或禁用 SFE 功能。这意味着 SFE 现在可以在不受分辨率、预设和调整信息限制的情况下,利用 NVIDIA Video Codec SDK 12.1 中的两个甚至三个 NVENC,在 NVIDIA RTX 4090NVIDIA RTX 6000 Ada 架构 上使用。这使得应用程序在使用双路或三路 SFE 对单个视频序列进行编码时,能够将编码性能提高一倍甚至三倍。在对 8K 视频进行编码时,这种性能提升尤其重要,因为这是一个对性能要求极高的应用场景。

4K 和 8K 分辨率下的 SFE

SFE 的应用方式可能会因分辨率和所选的视频编解码器而异。在关闭 SFE 的情况下使用 HEVC 时,只需使用单个切片。在使用双向或三向 SFE 时,会分别使用两个或三个切片。这些切片可水平地分离每帧。它适用于 4K 和 8K 分辨率(图 2)。此外,在对分辨率高达 4K 的视频进行编码时,这同样适用于 AV1.但是,AV1 使用图块而不是切片来创建这些独立的帧分区。

Three images showing generated frame partitions when encoding HEVC at 4K and 8K and AV1 at 4K for the several SFE configurations. HEVC 4K/8K and AV1 4K with no SFE (left); HEVC 4K/8K and AV1 4K with two-way SFE (center); HEVC 4K/8K and AV1 4K with three-way SFE (right).
图 2.在对几种 SFE 配置进行 4K 和 8K HEVC 编码以及 4K AV1 编码时生成的帧分区:不使用 SFE 的 HEVC 4K/8K 和 AV1 4K (左);使用双向 SFE 的 HEVC 4K/8K 和 AV1 4K (中心);使用三路 SFE 的 HEVC 4K/8K 和 AV1 4K (右)

使用 AV1 编码 8K 视频时,请考虑标准定义的最大图块分辨率为 4096 x 2304 像素。这意味着在编码 8K 视频时,每个帧将被拆分为四个图块,每个图块的分辨率为四分之一(3840 x 2160 像素)。使用 SFE 时,为了实现与 HEVC 相同的性能优势,每个图块将进一步水平拆分,分别为 8 个或 12 个图块,双向和三向 SFE (图 3)。

Three images showing generated frame partitions when encoding AV1 at 8K for the several SFE configurations: AV1 8K with no SFE (left); AV1 8K with two-way SFE (center); AV1 8K with three-way SFE (right).
图 3.为多种 SFE 配置对 AV1 进行 8K 编码时生成的帧分区:无 SFE 的 AV1 8K (左);双路 SFE 的 AV1 8K (中心);三路 SFE 的 AV1 8K (右)

表 1 总结了每个编解码器和输入视频分辨率所需的部分帧数和分辨率。

编解码器 视频分辨率 部分帧数和分辨率
无 SFE 双路 SFE 三路 SFE
HEVC 4K 分辨率 1x 3840 x 2160 2x 3840 x 1080 3x 3840 x 720
8K 分辨率 1x 7680 x 4320 2x 7680 x 2160 3x 7680 x 1440
AV1 4K 分辨率 1x 3840 x 2160 2x 3840 x 1080 3x 3840 x 720
8K 分辨率 4 台 3840 x 2160 显示器 8x 3840 x 1080 12x 3840 x 720
表 1.4K 和 8K 视频编码时的部分帧数和每个编解码器的相应分辨率汇总

启用分帧编码

随着 NVIDIA Omniverse 开发者套件的 API 更新,视频编解码器 SDK 12.1 在最新的 NVENCODER API 标头中引入了 NV_ENC_SPLIT_ENCODE_MODE。这一功能可以实现对 SFE(分割帧编码)的控制,如表 2 所示。现在,使用隐式或显式模式配置 SFE 变得更加简单。通过 NV_ENC_SPLIT_AUTO_MODENV_ENC_SPLIT_AUTO_FORCED_MODE,您可以轻松地采用 SFE 的隐式模式。如需了解更多详情,请参阅借助 AV1 和 NVIDIA Ada Lovelace 架构提高视频质量和性能

其余选项是指显式 SFE 配置。这些选项包括强制禁用 SFE、双向或三路。要强制禁用 SFE,需要使用具有适当数量 NVENC 引擎的 NVIDIA GPU.

NV_ENC_SPLIT_ENCODE_MODE SFE 类型 说明
NV_ENC_SPLIT_AUTO_MODE (0) 自动模式(默认) 双路 SFE 将根据输入视频分辨率和编码参数隐式触发
NV_ENC_SPLIT_AUTO_Forced_MODE (1) 强制自动模式
NV_ENC_SPLIT_Two_Forced_MODE (2) 强制双向 SFE 无论输入视频和编码参数如何,都将使用相应的 SFE 配置
NV_ENC_SPLIT_THREE_Forced_MODE (3) 强制三路 SFE
NV_ENC_SPLIT_DISABLE_MODE (15) 强制取消 SFE
表 2.选定的 SFE 类型和描述NV_ENC_SPLIT_ENCODE_MODE选项

最新的视频编解码器 SDK 编码示例AppEncMultiInstance还重点介绍了如何向应用程序添加显式 SFE 控制。

性能和压缩效率基准测试

测试了多种配置和输入 8K 视频,如表 3 所示。

基准测试配置
GPU GPU RTX 6000 Ada 生成(3 个 NVENC)
输入视频 7 个视频(4 个游戏视频和 3 个自然视频)
编码器 HEVC 和 AV1
预设 P1 (最快)、P4 (中等)和 P7 (最慢)
调优信息 低延迟 (LL) 和高质量 (HQ)
比特率 15、20、60、150 和 250 Mbps
表 3.基准测试配置摘要

执行了两种类型的基准测试:

转码性能:转码的目的是为了尽可能减少系统瓶颈(包括文件 I/O、CPU 与 GPU 之间的内存复制)的影响。为了测试转码性能,原始的 8K 视频被预先以非常高的比特率编码。在转码过程中,NVDEC 负责视频解码。而在没有使用分割、双向 SFE 和三路 SFE 的情况下,视频由一到三个 NVENC 进行重新编码。HEVC 和 AV1 的性能结果分别展示在图 4 和图 5 中。

压缩效率损失:通过在多个 NVENC 上拆分编码工作,预计会产生一定的压缩效率损失。为了测量这种损失,我们使用了 BD-RATE 指标,在多个基准配置中比较了单一编码、双向 SFE 和三路 SFE 之间的压缩效率。该指标反映了在相同目标质量下的平均压缩效率损失。在这些基准测试中,目标质量指标为 PSNR。HEVC 和 AV1 的压缩效率损失结果分别展示在图 6 和图 7 中。

Bar chart showing average performance benchmarking results for 8K transcoding using HEVC.
图 4.使用 HEVC 进行 8K 转码的平均性能基准测试结果
Bar chart showing average performance benchmarking results for 8K transcoding using AV1.
图 5.使用 AV1 进行 8K 转码的平均性能基准测试结果

使用双向 SFE 时,HEVC 和 AV1 的平均性能可提升约 1.8 倍。三路 SFE 可实现 HEVC 高达 2.95 倍、AV1 高达 2.31 倍的性能提升。在实践中,这可通过 NVIDIA RTX 6000 Ada Generation 实现 8K60 视频编码,同时使用 HEVC 和 AV1,并在中等预设 (P4) 下提供 LL 和 HQ 调优信息。

假设使用一到三个 NVENC 和一个 NVDEC,则 NVDEC 可能会成为转码 8K 时的瓶颈。因此,最快的预设 (P1) 可能会导致 FPS 平均最高达到约 120 FPS.这是单个 NVDEC 在 8K 下实现的平均最大性能。

只要 NVDEC 不是瓶颈,您就能看到更好的扩展效果。对于速度较慢的预设,例如 P4 和 P7,情况就是如此,与 P1 相比,性能扩展效果要好得多。

Chart showing average compression efficiency penalty results for 8K encoding using HEVC.
图 6.使用 HEVC 进行 8K 编码的平均压缩效率损失结果
Chart showing average compression efficiency penalty results for 8K encoding using AV1.
图 7.使用 AV1 进行 8K 编码的平均压缩效率损失结果

通常情况下,使用 BD-RATE (PSNR) 测量质量时,双向 SFE 的压缩效率损失预计不会超过 2%,三向 SFE 的压缩效率损失预计不会超过 4%.对于总部调整信息而言,此损失比 LL 更明显。此外,根据执行的基准测试,与 AV1 相比,使用 HEVC 时,此损失略为明显。

尽管与性能权衡相比,这种压缩效率损失仍然相对较低,但要由用户来确定所需的用例是否受益于更高的性能或压缩效率。无论如何,NVENCODE API 不仅可以完全控制 8K 的 SFE,而且还可以控制更低的分辨率。

总结

分帧编码 (SFE) 是一项革命性功能,它能在 8K60 及更高分辨率下实现视频编码。此功能让用户能够利用 NVIDIA Ada Lovelace 架构 GPU 中的多个 NVENC 强大功能,对单个视频序列进行编码。本文探讨了双向 SFE(使用两个 NVENC)和三路 SFE(使用三个 NVENC)的性能优势。NVIDIA 视频编解码器 SDK 提供了对 SFE 的显式控制,以便进行优化定制。

 

Tags