这篇文章最初发表在 NVIDIA 技术博客上。
十多年来, NVIDIA GPU 一直采用称为NVENC 和 NVDEC。它们具有高度并行化的架构,支持流行的编解码器格式,并提供对 GPU 存储器的直接访问,以优化编码和解码操作。
GPU -- 加速视频 意味着将视频处理卸载到 NVENC 和 NVDEC ,减少 CPU 周期,并利用更优化的硬件单元。为了启用 GPU 加速, NVIDIA 提供Video Codec SDK:支持高性能编码和解码的丰富 API 。
去年, NVIDIA 推出了Ada Lovelace 架构,采用新的第八代 NVENC 。视频编解码器 SDK 已更新以支持AV1 encode在 NVIDIA Ada Lovelace 上,以及拆分编码,以同时利用多个 NVENC 的功率。
Video Codec SDK 12.1是最新版本,现已上市。这篇文章重点介绍了 12 . 1 版本中支持的新功能,以及如何使用它们来增强视频处理用例,如 NVIDIA GPU 上的内容创建和流媒体。
显式拆分帧编码
使用分割编码,输入帧被分割,每个部分由芯片上的多个 NVENC 并行处理,与顺序编码相比,这导致了显著的加速。分割编码最初默认在 HEVC 和 AV1 的 4K 和 8K 分辨率的预定 HQ 和 LL 预设上实现。
在视频编解码器 SDK 12 . 1 中,您可以使用标志控制分割编码的实现:
- 禁用该标志将产生原始默认功能,该功能在 4K 和 8K 分辨率的预定预设下启用。
- 启用该标志可在所有分辨率和预设之间实现拆分编码。
您还可以根据 GPU 上的 NVENC 数量控制两个或三个 NVENC 之间的拆分。有关详细信息,请参阅GPU matrix.
默认拆分编码对于 4K 、 8K | 在所有预设和分辨率上拆分编码 | |
拆分编码 API 标志=已启用 | 是,对于某些预设 | 对 |
拆分编码 API 标志=已禁用 | 是,对于某些预设 | 不 |
表 1 。分割编码功能
在Video Encoding 8K60 and Beyond with Ada LovelaceGTC 会话。
用于 H.264 、 HEVC 和 AV1 的 NVENC 低级 API
视频编解码器 SDK 12.1 为 H.264 、 HEVC 和 AV1 编码器提供了更多的低级别 API ,以控制硬件编码器的内部状态。这些 API 对于希望对编码质量进行精细控制的应用程序非常有用。
- 迭代编码:迭代编码使您能够冻结编码器的自动状态前进。然后,您可以对同一帧进行重新编码,每次都使用不同的 delta QP 。 NVENC 存储所有可能的新状态,使您能够停止迭代,并基于任何一次迭代手动强制前进。
- **ReCon:**您可以在硬件编码器的重新配置循环中访问更高质量的重建帧。 NVENC 还支持行和块级别的 QP 和位计数统计。
- **外部展望:**此 API 为前瞻功能提供了增强的控制。 API 允许您决定 lookahead 传递的缩放比例。默认值为 1 / 16th 决议
迭代编码、重构和外部前瞻由Beamr's Content Adaptive Bit Rate( CABR )库使用,它与 NVENC 联合工作,以创建完全符合标准的比特流。对于给定的感知质量,这些比特流具有尽可能低的比特率,这是通过在没有任何可见质量退化的情况下找到每帧的最大压缩级别来实现的。
将 CABR 库与视频编解码器 SDK 一起使用可以实现各种用例,包括以下用例:
- **编码器优化:**对于现有的 NVENC 用户, CABR 可以使用相同的配置和比特率设置来生成与原始 NVENC 编码相同的永久质量的压缩视频。与原始 NVENC 压缩相比, CABR 优化的视频可以节省 10-30% 。
- **编码器现代化:**可以在不指定任何比特率的情况下使用 CABR-NVENC 优化。在这种情况下,该算法产生与原始视频在感知上相同质量的压缩视频,压缩增益高达 50% 。该流使其能够从编解码器到编解码器进行代码转换,并在比特流之间保持相同的质量。
图 2 : CABR 产生比传统压缩方法更高质量的视频,同时保持显著的比特率节约
比特率节省可能因文件和场景而异,但通常平均为 30%-40% 。 CABR 视频的这些节省减少了存储需求,大大降低了数百万流必须以高质量存储的成本。
在底层编码相对于本机分辨率已经具有攻击性的情况下,可能不可能在不降低质量的情况下进一步降低比特率。另一方面,在智能手机上的用户生成内容( UGC )等情况下,使用保守的比特率来保证质量, CABR 可以实现高达 60%-70% 的节约。这些优化还通过最小化带宽需求来降低内容交付网络( CDN )成本。
在与 NVENC 集成之前, CABR 只能通过离线处理实现。现在,在 NVIDIA GPU 的支持下, CABR-NVENC 实时运行,将其用于优化现场视频创作服务。
使用 CABR-NVENC 进行视频创作
Wochit是一个基于云的视频内容创建解决方案,提供了组织用于大规模制作专业视频的精简工具。他们最近推出了Wochit Wizard,一个人工智能驱动的、基于提示的视频创建工具。 Beamr 在 NVIDIA GPU 上的 CABR 帮助 Wochit 建立了新的人工智能服务,大大节省了存储和交付成本。
" 10 多年来,我们一直在 GPU 上对视频进行编码、解码和转码;为内容创建提供了一个强大的平台,每年处理 100 万个视频。 Beamr 的 CABR 技术使我们能够在保持质量的同时显著减少文件大小。通过 CABR 的端口连接 NVIDIA GPU,我们现在可以实时利用它,而不是冗长而昂贵的离线处理。我们很高兴能够在 NVIDIA GPU 上使用 Beamr 的解决方案来探索人工智能视频创作的新领域,并增强我们的客户体验!"--Dror Ginzberg , Wochit 的联合创始人兼首席执行官。
为 NVIDIA GPU 优化云流
V-Nova一直在与 NVIDIA 合作优化Low Complexity Enhancement Video Coding( LCEVC ),这是 MPEG 在 NVIDIA GPU 上推出的新视频标准。
LCEVC 指定增强层,该增强层与基本编码流相结合以产生增强视频流。 LCEVC 特别适用于云游戏和 VR / XR 应用。在这些用例中,内容由云中的游戏引擎渲染,编码为视频,并通过标准 IP 连接发送到轻型、节能的客户端设备。
LCEVC 能够将必要的比特率降低到超过单独使用 AVC 、 HEVC 或 AV1 可能的比特率,同时保持最小延迟,减少延迟抖动,并且具有低计算负载。
V-Nova 与 NVIDIA 合作,优化了 NVIDIA GPU 上的 LCEVC ,支持解码端的低端设备(手机上的 1080p60 低延迟解码和 XR 耳机上的 4Kp90 )。为了在 LCEVC GPU 处理和渲染操作之间产生有限的争用, LCEVC 会在Tensor Cores可用时使用它。
这与云渲染、超低延迟、 XR 流媒体的使用情况尤其相关,在这种情况下,无线分发到 XR 耳机需要低于 25 Mbit / s 的传输。图 3 显示了在 25 Mbit / s 时,与 LCEVC 增强的 HEVC 相比的 HEVC 。
图 3 。借助 NVIDIA GPU 上的 LCEVC ,降低比特率可保持云流游戏的卓越质量
在延迟方面,目的是避免任何类型的缓冲,并在一帧内保持 3680 × 1920 立体视频的编码时间。大多数编码阶段都移到了 GPU 上,与渲染引擎和 NVENC 紧密相连。
LCEVC 还利用了 ReCon ,这是一种新的视频编解码器 SDK 12 . 1 功能,可以从 NVENC 访问重建的帧。这消除了 NVDEC 阶段,每帧产生约 5 毫秒的编码时间。总体而言,与 CPU 实现相比, NVIDIA GPU 上的 LCEVC 实现了 10 倍的加速。
视频编解码器 SDK 12 . 1 入门
有关新视频功能的更多信息,请参阅Improving Video Quality and Performance with AV1 and NVIDIA Ada Lovelace Architecture.