网易首页 > 网易号 > 正文 申请入驻

NVIDIA Video Codec SDK 13.1:零拷贝转码、AV1 B帧与精准帧定位

0
分享至


高质量视频的需求在各行各业持续增长,从沉浸式流媒体体验到远程协作、生成式 AI 媒体工具,再到大规模内容分发,视频技术正成为这一切的底层支撑。

在这些应用场景背后,视频处理管线需要变得更快、更高效,并能应对日益复杂的格式与工作负载。NVIDIA Video Codec SDK 借助专用硬件视频引擎,为开发者提供 GPU 加速的视频编解码能力,助力应对上述挑战。

NVIDIA Video Codec SDK 13.1 现已正式发布。官方鼓励开发者在视频处理管线中探索最新功能,充分利用经过重新设计的示例应用,并通过 NVIDIA 开发者论坛分享反馈意见。

本次更新的主要功能包括:

编码功能:AV1 分层参考模式,支持最多 31 个 B 帧;UHQ 调优信息与迭代编码的联合使用。

解码功能:H.264 和 HEVC 的逐宏块解码统计;MV-HEVC 解码中的视图信息获取;定位到指定帧。

转码功能:应用程序分配的 CUarray 作为 NVENC 输入和 NVDEC 输出;采用模块化、基于队列架构的全新转码器示例。

其他功能:官方基于 Docker 的开发环境。

AV1 分层参考模式与 B 帧

将 B 帧用作参考帧可提升编码质量,而分层参考模式通过将 B 帧组织成树状参考结构进一步强化这一效果:叶节点为非参考 B 帧,根节点为中间 B 帧。这种结构将 NVENC 支持的最大 B 帧数量从 7 提升至 31,使编码器能更充分地利用时间冗余,整体提升编码质量。该模式不会带来性能损耗,但显存占用会有所增加。

SDK 13.1 为 AV1 新增了分层参考模式,支持 1、3、7、15 和 31 个 B 帧;H.264 和 HEVC 将在后续驱动版本中跟进支持。该模式在 7 个及以上 B 帧时效果最为显著,且对性能影响极小。配置详情请参阅 NVENC 编程指南。

在恒定质量(CQ)模式下,编码 15 个 B 帧相比 NVENC 的高质量(HQ)调优(预设 p7)可显著节省码率;在可变码率(VBR)模式下同样如此。

UHQ 调优信息与迭代编码联合使用

迭代编码(于 Video Codec SDK 12.1 引入)可冻结编码器的自动状态推进,允许用户以不同参数对同一帧进行重新编码,NVENC 会追踪每次迭代的状态,并可随时停止并提交其中某一结果。

UHQ 调优信息(于 Video Codec SDK 12.2 引入)结合前瞻级别与时域滤波,在延迟容忍型编码场景中实现最优的质量与性能平衡。时域滤波通过运动估计在相邻帧中查找匹配块,并将其应用于当前帧的滤波处理,从而降低自然视频的噪声,平均可为自然内容带来 4%–5% 的编码增益。前瞻级别功能通过分析未来帧,并借助编码树单元(CTU)等统计信息实现高效的码率控制比特分配。目前支持四个具有不同性能与质量权衡的前瞻级别。

13.1 版本将 UHQ 调优信息与迭代编码相结合,使前瞻级别与时域滤波现可与逐次迭代重编码协同工作。

逐宏块解码统计

NVDECODE API 现可为 H.264 和 H.265(HEVC)内容中每个已解码帧检索详细的逐宏块解码统计信息。对于每个 16×16 的块,解码器会输出亮度量化参数(QP)、编码单元类型(帧内、帧间、跳过或 PCM)以及最多两个运动向量(前向和后向),这些数据均作为硬件解码的自然副产品提取,不产生额外的 CPU 开销。

这些统计信息解锁了以往依赖 CPU 端码流解析的 GPU 加速视频分析工作流。运动向量可用于场景切换检测、目标跟踪和镜头边界分析;QP 值可提供逐块的编码质量视图,用于自适应码率优化和质量监控;宏块类型可揭示编码结构,适用于内容分类和压缩研究。

使用流程简洁明了:应用程序通过 cuvidGetDecoderCaps() 查询解码器能力,在创建解码器时启用统计收集,并通过 cuvidMapVideoFrame() 为每个解码帧检索 GPU 侧统计缓冲区。用户可将统计数据复制到主机内存,或直接使用 CUDA 内核在 GPU 上进行实时管线处理。SDK 附带了现成可用的示例 AppDec -dumpstats,完整演示了上述流程。

帧精准定位

AI 工作流——从目标检测、内容审核、视频摘要的推理管线,到大规模数据集的多样性帧采样训练数据准备——往往需要访问特定帧而非顺序解码。视频编辑和非线性后期制作也有同样的需求。

Video Codec SDK 现通过 NvVideoDecoder 类提供全面的帧定位与随机帧访问 API,使帧精准访问像数组索引一样简单,同时只获取所需帧。

该功能采用 GOP 感知定位架构处理请求。对于第 N 帧,SDK 会找到目标帧之前最近的 IDR 帧,将解封装器定位至该处,并通过 CUVID_PKT_DISCONTINUITY 刷新解码器状态。从该 IDR 帧起,仅处理到达第 N 帧所需的帧:解析器会标记并跳过非参考帧,参考帧正常解码但通过基于 PTS 的过滤绕过映射和后处理(格式转换、缩放、裁剪等),只有第 N 帧才运行完整的解码、映射和后处理管线。

NvVideoDecoder 类封装了底层 SeekUtils 引擎,并提供了简洁的基于运算符的接口。主要功能包括:

解码器缓存(适用于播放列表):NvVideoDecoder 按编解码器、位深和色度格式缓存解码器实例,并通过 LRU 淘汰策略复用,避免频繁创建的开销。

不可寻址流:基本流、网络流和管道流可自动检测,前向定位高效执行,后向定位则通过自动重置解码器实现。

灵活的帧指定方式:AppDecVideoDecoder 示例支持单独索引(如 0,10,20)、带步长的范围(如 0:100:10)、基于时间的访问(如 -t 1.5,3.0)以及用于批量处理的播放列表文件。

开放 GOP 支持:对于包含非 IDR I 帧的流,定位到最近的 IDR 帧而非最近的关键帧,确保所有参考帧可用。

MV-HEVC 3D 视频支持增强

Video Codec SDK 现提供更完善的 3D 视频支持:解码器可输出视图 ID 和图层元数据;支持高分辨率下的多 GPU 编码;以及改进了与第三方软件的兼容性。

MV-HEVC 解码更新方面,视图信息上报功能使解码器可输出特定图层和参考信息(如 nuh_layer_id),便于应用程序按视图标识和路由帧以实现立体处理;更广泛的码流支持使解码器能够处理第三方编码器生成的 MV-HEVC 3D 码流,确保左右视图均能正确播放。

MV-HEVC 编码更新方面,简化了 FFmpeg 的元数据处理,使通过 FFmpeg 编码时 HEVC 3D 显示元数据能够正确出现在码流中;分帧编码(SFE)功能允许多个编码器协同处理单帧,为超出单个编码器处理能力的高分辨率 3D 和 XR 视频提速。

全新转码示例套件

全新转码示例套件注重灵活性、性能与可定制性,提供四个应用程序:

AppTransPerf:对 NVDEC 和 NVENC 的最大吞吐量进行基准测试。

AppTrans:带可选位深转换的 1:1 转码。

AppTransOneToN:带缩放的 1:N 转码。

AppTransZeroCopy(新增):1:1 零拷贝纯转码应用,针对最低可能延迟进行优化。

模块化、基于队列的架构

此前的实现速度较快,但结构较为单一:用户需要在修改管线前理解整个管线。13.1 版本围绕严格模块化、基于队列的架构对示例进行了重新设计,保证并发性、简化定制化,并最大化硬件利用率。

重新设计后,每个管线阶段分配一个专用 CPU 线程,构成一个生产者-消费者系统,各线程通过明确指定大小的输入输出队列进行通信。核心 AppTrans 管线被拆分为四个独立执行上下文:解码线程(NVDEC)负责解封装和解码;计算线程(CUDA)负责处理;编码线程(NVENC)负责编码;输出线程负责收集输出并封装。

每个线程独立负责一个步骤,形成解耦设计,可原生处理同步问题。帧按顺序通过队列传递,确保数据流的安全性。

该架构的主要优势包括:

模块化:只需复制和调整所需的管线步骤,解耦组件使错误和异常隔离在各自线程内。

性能:各管线步骤之间的完全并发得到保证,分离 CPU 提交线程确保 GPU 始终不会处于空闲状态;一旦饱和,硬件引擎(NVDEC、CUDA、NVENC)可在不同帧上并行运行各阶段。

可定制性:解耦的队列提供完全控制权。只需编码?移除解码线程,直接向计算和编码队列输入。需要超低延迟而非高吞吐量?减小队列大小以最小化缓冲等待。有自定义 AI 滤镜?修改计算线程以独立调度 CUDA 内核,而不阻塞解码器或编码器的提交循环。

AppTransZeroCopy 零拷贝转码

在传统转码管线(如 AppTrans)中,解码帧在到达编码器之前需要经过多次内部格式转换和复制,这是标准 NvDecoder 和 NvEncoder API 的固有特性。AppTransZeroCopy 通过让 NVDEC 和 NVENC 直接在两者均原生支持的格式下共享同一 GPU 内存来消除这一复制链。该机制由四部分组成:

共享缓冲池分配:启动时,应用程序使用 cuArray3DCreate 并带 CUDA_ARRAY3D_VIDEO_ENCODE_DECODE 标志分配一个 CUDA 数组(CUarray)池,告知 CUDA 驱动这些表面将在两个视频编解码引擎之间共享。每个 CUarray 以 NVDEC 和 NVENC 均可原生访问的格式保存一帧(亮度加色度平面),绕过传统管线的中间转换。

双重注册:同一 CUarray 同时注册到两个编解码器。在解码器端,通过 SetExternalOutputArrays() 作为外部输出表面提供,告知 NVDEC 将解码帧直接写入其中;在编码器端,通过 NVENC 的 nvEncRegisterResource API 以 NV_ENC_INPUT_RESOURCE_TYPE_CUDAARRAY 资源类型注册为输入资源,使编码器无需输入转换即可直接读取。

流水线执行:解码、编码和输出三个线程通过并发队列连接,并通过基于令牌的流量控制管理 CUarray 在解码器和编码器之间的所有权。

流有序同步:NVDEC 和 NVENC 共享同一 CUDA 流,在无需显式 CPU-GPU 同步的情况下,保证解码写入和编码读取之间的正确顺序。

零拷贝方案的主要优势包括:

降低流多处理器(SM)利用率:传统管线使用多个 CUDA 复制和转换内核在各阶段之间传输帧。零拷贝消除了这些中间内核,为 CUDA 预处理、推理或渲染释放了 SM 资源。

减少 GPU 显存占用:传统管线在每个阶段保留独立缓冲区,零拷贝将其合并为一个共享池,显著降低每会话的显存消耗。

并发会话吞吐量提升:更低的 SM 利用率加上更小的显存占用提升了可扩展性,使 GPU 在达到 SM 饱和或显存耗尽前能够维持更多并发转码会话。

基于 Docker 的官方开发环境

传统的 Video Codec SDK 搭建流程需要安装 CUDA 工具包、Vulkan SDK、系统库和 FFmpeg,然后在不同宿主发行版和驱动版本下构建 SDK 示例,操作繁琐。Video Codec SDK 13.1 引入了官方基于 Docker 的开发环境,将一致、预配置的软件栈打包进单一容器。镜像从开放的 Dockerfile 构建,可在本地或云端复现环境,并通过构建参数进行自定义。

该镜像分两个阶段构建:构建阶段编译 SDK 示例并安装 Vulkan SDK 和 FFmpeg;运行阶段仅保留运行和开发所需的内容。软件栈固定使用 CUDA 12.3.2、Vulkan SDK 1.4.304.1 和 Ubuntu 22.04 LTS。

使用 SDK_ZIP 构建参数指向 Video_Codec_SDK_13.1.x.zip,可选的 FFMPEG_URL 参数可提供自定义 FFmpeg 压缩包(例如带 NVENC 的 LGPL 构建)替代默认的 BtbN LGPL 构建。

容器内,预构建的示例位于 /video-codec-sdk/Samples/build/ 目录,包括 AppDec 和 AppEncCuda,可直接结合测试向量运行。FFmpeg(LGPL)安装在 /opt/ffmpeg,用于生成 YUV、编码 MJPEG 和 MPEG,以及检查编码流。测试向量脚本可生成多种格式的原始 YUV、JPEG、MPEG-1/2/4,以及在 GPU 可用时通过 AppEncCuda 生成 H.264 和 HEVC,从而完整验证处理管线。容器以非 root 用户运行,并为编排系统提供了 HEALTHCHECK。

运行要求:

支持视频编解码的 NVIDIA GPU

已启用 GPU 支持的 Docker

NVIDIA Container Toolkit

SDK 安装包文件

将 SDK 压缩包(如 Video_Codec_SDK_13.1.x.zip)放置于 Docker 构建上下文中并执行构建:

cd ubuntu22.04

docker build -t nvidia/video-codec-sdk:13.1-ubuntu22.04 \\

--build-arg SDK_ZIP=Video_Codec_SDK_13.1.x.zip \\

带 GPU 访问权限启动容器,可在启动时生成测试向量,或打开 Shell 直接运行示例:

标准启动:docker run --gpus all -it nvidia/video-codec-sdk:13.1-ubuntu22.04

启动时生成完整测试向量套件(约 10–15 分钟):docker run --gpus all -it nvidia/video-codec-sdk:13.1-ubuntu22.04 --generate-vectors full

仅生成 720p H.264 向量:docker run --gpus all -it nvidia/video-codec-sdk:13.1-ubuntu22.04 --generate-vectors h264 --resolution 1280x720

生成模式支持 full、h264、hevc、vp8、vp9 和 av1。容器内,sdk-samples、test-decode 和 test-encode 别名可快速跳转到示例目录,并使用生成的向量运行快速测试。

Docker 开发环境的主要优势:

可复现性:相同的 CUDA、Vulkan、FFmpeg 和 SDK 版本在任何环境下均可运行,消除"在我机器上可以运行"的环境漂移问题。

快速上手:克隆仓库、添加 SDK 压缩包、运行 docker build 和 docker run --gpus all 即可,无需在宿主端安装 SDK 或 Vulkan。

CI 与云端友好:在任何支持 NVIDIA Container Toolkit 和 GPU 的环境中,单一镜像即可驱动流水线和云端工作负载。

Dockerfile 和辅助脚本位于 video-codec-sdk-docker 仓库。详细构建选项、环境变量和故障排除方法请参阅仓库 README。

开发者可下载 SDK,在视频处理管线中体验全新的编码、解码和转码功能,并分享使用反馈。重新设计的示例应用便于将新功能融入现有工作流,或从零构建自定义管线。

Q&A

Q1:NVIDIA Video Codec SDK 13.1 的零拷贝转码是怎么工作的?有什么优势?

A:零拷贝转码通过让 NVDEC 和 NVENC 直接共享同一块 GPU 内存(CUarray)来消除传统管线中的多次格式转换和数据复制。具体机制包括共享缓冲池分配、双重注册到编解码器、流水线线程执行以及流有序同步。其主要优势是降低 SM 利用率、减少显存占用,并在并发转码会话场景下提升整体吞吐量。

Q2:AV1 分层参考模式支持最多多少个 B 帧?对性能有影响吗?

A:SDK 13.1 中的 AV1 分层参考模式支持 1、3、7、15 和 31 个 B 帧,将 NVENC 最大 B 帧数从 7 帧提升至 31 帧。该模式在 7 个及以上 B 帧时效果最为显著,对性能影响极小,但会增加显存占用。H.264 和 HEVC 的分层参考模式将在后续驱动版本中支持。

Q3:SDK 13.1 的 Docker 开发环境包含哪些组件?怎么快速上手?

A:官方 Docker 环境固定使用 CUDA 12.3.2、Vulkan SDK 1.4.304.1 和 Ubuntu 22.04 LTS,内置预编译的 SDK 示例和 FFmpeg(LGPL)。上手方式非常简单:将 SDK 压缩包放入 Docker 构建目录,执行 docker build 指定 SDK_ZIP 参数,再用 docker run --gpus all 启动即可,无需在宿主机上单独安装 CUDA 工具包、Vulkan SDK 等依赖。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
谢家出了一位“叛徒”,这可不是普通的叛徒,而是18岁的谢振轩

谢家出了一位“叛徒”,这可不是普通的叛徒,而是18岁的谢振轩

静若梨花
2026-08-04 11:09:31
东西是日本发明的,钱却被中国赚了,十年都不涨价却能垄断全球?

东西是日本发明的,钱却被中国赚了,十年都不涨价却能垄断全球?

夏末moent
2026-07-03 23:59:08
广州老城三兄弟,一起搞大事

广州老城三兄弟,一起搞大事

兰妮搞笑分享
2026-08-06 14:08:47
看懂乡镇党委书记,就看懂了中国基层治理的难处

看懂乡镇党委书记,就看懂了中国基层治理的难处

画生笔记
2026-08-06 09:16:50
八一刚过,两人被抓!泄露航母关键机密,原来间谍藏在普通人身边

八一刚过,两人被抓!泄露航母关键机密,原来间谍藏在普通人身边

仙味少女心
2026-08-05 20:32:30
人民日报访张柱

人民日报访张柱

政知新媒体
2026-08-06 09:35:50
朱女士吃下定心丸!无锡婚外胚胎事件,迎来关键舆论转向,官方回应来了

朱女士吃下定心丸!无锡婚外胚胎事件,迎来关键舆论转向,官方回应来了

火山詩话
2026-08-05 10:51:39
差距暴涨2.8倍!城乡养老双标真相,骗了国人十几年

差距暴涨2.8倍!城乡养老双标真相,骗了国人十几年

流苏晚晴
2026-06-07 18:54:52
大逆转,中国拼命建核电站,信号很不寻常

大逆转,中国拼命建核电站,信号很不寻常

智谷趋势
2026-08-05 15:25:59
台风“白海豚”对江苏影响时间确定:8-13日将对江苏有风雨影响,内陆风力可达7-9级,沿海风力可达9-11级

台风“白海豚”对江苏影响时间确定:8-13日将对江苏有风雨影响,内陆风力可达7-9级,沿海风力可达9-11级

鲁中晨报
2026-08-06 17:26:13
笑死,你家逆子也是攒小金库的吗?逆子:排骨145一斤。

笑死,你家逆子也是攒小金库的吗?逆子:排骨145一斤。

水泥土的搞笑
2026-08-06 14:16:53
李亚鹏云南咖啡店开业,三姐妹罕见同框,李嫣当众蒙住脸不愿出镜

李亚鹏云南咖啡店开业,三姐妹罕见同框,李嫣当众蒙住脸不愿出镜

胡一舸南游y
2026-08-05 13:12:30
大快人心!婚外胚胎案丈夫亮剑,漂亮三姐真容流出,细节太讽刺!

大快人心!婚外胚胎案丈夫亮剑,漂亮三姐真容流出,细节太讽刺!

兵鉴史
2026-08-03 10:05:32
女篮世界杯最新实力榜:美国稳居第一 中国第六 日本第10位

女篮世界杯最新实力榜:美国稳居第一 中国第六 日本第10位

狼叔评论
2026-08-06 11:48:03
中国已经成为全球第一个集体拒接电话的国家

中国已经成为全球第一个集体拒接电话的国家

黯泉
2026-06-26 10:44:35
炸到中国头上来了!一周两艘中资船被袭击,莫非专盯中方资产?

炸到中国头上来了!一周两艘中资船被袭击,莫非专盯中方资产?

诺诺谈史
2026-08-06 11:36:46
公公总说我做的菜太咸,这一次,我彻底不放盐了,纯清水煮菜,结果公公慢慢说:今天还是有点咸,当晚我看着客厅里的摄像头红了眼。

公公总说我做的菜太咸,这一次,我彻底不放盐了,纯清水煮菜,结果公公慢慢说:今天还是有点咸,当晚我看着客厅里的摄像头红了眼。

匆匆六十载
2026-08-05 11:04:24
万米高空,11岁女孩突发心脏不适,北京中医药大学4名教师出手!

万米高空,11岁女孩突发心脏不适,北京中医药大学4名教师出手!

环球网资讯
2026-08-06 09:54:14
贾国龙再创新品牌“天边羊多”,首店落北京

贾国龙再创新品牌“天边羊多”,首店落北京

餐饮O2O
2026-08-06 17:07:29
钓鱼岛生态遭破坏,没想到几千只羊是罪魁祸首!羊从何处而来?

钓鱼岛生态遭破坏,没想到几千只羊是罪魁祸首!羊从何处而来?

有牙的兔纸
2026-08-06 14:30:58
2026-08-06 18:07:00
至顶科技 incentive-icons
至顶科技
科技产业媒体与 AI 产业服务机构
20740文章数 49726关注度
往期回顾 全部

科技要闻

凌晨谷歌AI地震!4位大牛离职 CEO退居二线

头条要闻

阿里巴巴集团主席蔡崇信离婚 欲让三子女参与家族事业

头条要闻

阿里巴巴集团主席蔡崇信离婚 欲让三子女参与家族事业

体育要闻

大梦鲨鱼上将尤因:90年代四大中锋有多强

娱乐要闻

周杰伦私生活被扒,澳门传闻水落石出

财经要闻

"杭州六小龙"群核科技物理AI故事有水分吗?

汽车要闻

上汽通用再签20年:合资2.0时代,玩法变了

态度原创

本地
健康
教育
公开课
军事航空

本地新闻

课本里的童年,绍兴正上演

耳鼻喉科专家破解耳石症八大谣言

教育要闻

从虎门硝烟到“笑气”陷阱 方城少年的暑期“清醒”之旅

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

李在明点名批评驻韩美军拖延归还用地

无障碍浏览 进入关怀版