NVIDIA 视频编解码器 SDK v13.0

自述文件

发行说明

视频编解码器 SDK v13.0 的新增功能?

编码功能:

  1. 在 Blackwell GPU 上支持 H264 隔行扫描、10 位和 4:2:2 编码
  2. 在 Blackwell GPU 上支持 HEVC 4:2:2 编码
  3. MV-HEVC:支持 HEVC 中的多视图编码
  4. AV1 LTR:支持 AV1 中的长期参考帧
  5. 支持 AV1 和 HEVC 时间层编码
  6. 支持 AV1 和 HEVC MaxCLL、Mastering Display 和 ITU-T T.35 SEI/元数据

解码功能:

  1. 在 Blackwell GPU 上,H264 吞吐量提高 2 倍,最大支持分辨率为 8192x8192。
  2. 在 Blackwell GPU 上支持 H264 High10/High422 Profile(排除 MBAFF)
  3. 在 Blackwell GPU 上支持 HEVC Main 4:2:2 10/12 profile(排除 YUV400)
  4. 动态解码表面分配

软件包内容

此软件包包含以下内容

  1. 演示各种编码/解码/转码功能的示例应用程序
    • [.\Samples\]
  2. NVIDIA 视频编码器 API 标头
    • [.\Interface\nvEncodeAPI.h]
  3. NVIDIA 视频解码器 API 标头
    • [.\Interface\cuviddec.h]
    • [.\Interface\nvcuvid.h]
  4. NVIDIA 视频解码器和编码器存根库
    • [.\Lib\linux\stubs\x86_64\libnvcuvid.so]
    • [.\Lib\linux\stubs\x86_64\libnvidia-encode.so]
    • [.\Lib\linux\stubs\aarch64\libnvcuvid.so]
    • [.\Lib\linux\stubs\aarch64\libnvidia-encode.so]
    • [.\Lib\Win32\nvcuvid.lib]
    • [.\Lib\Win32\nvencodeapi.lib]
    • [.\Lib\x64\nvcuvid.lib]
    • [.\Lib\x64\nvencodeapi.lib]

软件包中提供的示例应用程序仅用于演示目的,可能未针对质量和性能进行全面调整。因此,建议用户对其质量和/或性能进行独立评估。

系统要求

Windows 配置要求

  • 需要安装 Vulkan SDK 才能构建和运行 AppMotionEstimationVkCuda 示例应用程序。
  • 要构建需要 FFmpeg 标头和库的示例应用程序,用户必须:
    • BtbN 存储库 获取 FFMPEG LGPL 共享版本(版本 7.1)。软件包名称为 ffmpeg-n7.1-latest-win64-lgpl-shared-7.1.zip,可以在 BtbN github 存储库的最新自动构建部分下找到。
    • 在 cmake 配置阶段(第 1.3 节),设置 FFMPEG_DIR cmake 变量以指向包含标头和库的解压后的 FFMPEG 目录,即包含 bin、lib 和 include 子目录的目录。
      • cmake -G"Visual Studio 16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DFFMPEG_DIR=<FFMPEG 目录的路径> -DCMAKE_INSTALL_PREFIX=. ..
    • 如果用户不想构建任何依赖于 FFMPEG 的应用程序,则可以在 cmake 配置阶段将 cmake 变量 SKIP_FFMPEG_DEPENDENCY 设置为 TRUE,以跳过 FFMPEG 库的设置。这将从生成的 Visual Studio 解决方案中排除所有依赖于 FFMPEG 的应用程序。
      • cmake -G"Visual Studio 16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DSKIP_FFMPEG_DEPENDENCY=TRUE -DCMAKE_INSTALL_PREFIX=. ..
    • 如果未设置 SKIP_FFMPEG_DEPENDENCY cmake 变量,则必须设置 FFMPEG_DIR cmake 变量以指向包含 FFMPEG 库和标头的目录,否则在 cmake 配置阶段将抛出错误。
  • 要构建依赖于 freeglut 和 GLEW 库的 VideoCodecSDK 应用程序,用户必须设置 GLEW_DIR、GLUT_DIR 和 GLUT_INC cmake 变量,以指向包含 GLEW 和 freeglut 库的二进制文件和标头的相应目录。
    • 要设置构建所需的 GLEW 库和标头,用户必须:
      • GLEW 存储库 获取预构建的 GLEW 二进制文件(版本 2.1.0)
      • 在 cmake 配置阶段(第 1.3 节),设置 GLEW_DIR cmake 变量以指向包含标头和库的解压后的 GLEW 目录,即包含 bin、lib 和 include 子目录的目录。
        • cmake -G"Visual Studio 16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DGLEW_DIR=<GLEW 目录的路径> -DCMAKE_INSTALL_PREFIX=. ..
      • 如果用户不想构建任何依赖于 GLEW 库的应用程序,则可以在 cmake 配置阶段将 cmake 变量 SKIP_GL_DEPENDENCY 设置为 TRUE,以跳过构建所需的 GLEW 库的设置。这将从生成的 Visual Studio 解决方案中排除依赖于 GLEW 的应用程序。
        • cmake -G"Visual Studio 16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DSKIP_GL_DEPENDENCY=TRUE -DCMAKE_INSTALL_PREFIX=. ..
      • 如果未设置 SKIP_GL_DEPENDENCY cmake 变量,则必须设置 GLEW_DIR cmake 变量以指向包含 GLEW 库和标头的目录,否则在 cmake 配置阶段将抛出错误。
    • 要设置构建所需的 freeglut 库和标头,用户必须:
      • GLUT 存储库 获取 freeglut 源代码(版本 3.4.0)。版本 3.4.0 的下载链接可以在稳定版本部分下找到。
      • 由于 freeglut 不分发预构建的库,因此用户需要从获取的源代码构建库。有关从 freeglut 源代码构建库的详细说明,请参阅 freeglut 源代码目录中的 README.cmake 文件。请确保构建 Release 和 Debug 版本的 freeglut,因为构建 VideoCodecSDK 应用程序都需要这两个版本。成功构建后,freeglut 构建目录中的 lib/Debug 子目录将包含 freeglut_staticd.lib 和 freeglutd.lib 文件,而 freeglut 构建目录中的 lib/Release 子目录将包含 freeglut.lib 和 freeglut_static.lib 文件。
      • 在 cmake 配置阶段(第 1.3 节),设置 GLUT_DIR cmake 变量以指向包含本地构建库的 freeglut 构建目录,即包含 bin 和 lib 子目录的目录。
      • 设置 GLUT_INC cmake 变量以指向 freeglut 源代码目录中的 include 目录,即包含 GL 子目录的目录,该子目录具有 freeglut 标头。
        • cmake -G"Visual Studio16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DGLUT_DIR=<freeglut 构建目录的路径> -DGLUT_INC=<freeglut include 目录的路径> -DCMAKE_INSTALL_PREFIX=. ..
      • 如果用户不想构建任何依赖于 freeglut 库的应用程序,则可以在 cmake 配置阶段将 cmake 变量 SKIP_GL_DEPENDENCY 设置为 TRUE,以跳过构建所需的 freeglut 库的设置。这将从生成的 Visual Studio 解决方案中排除依赖于 freeglut 的应用程序。
        • cmake -G"Visual Studio 16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DSKIP_GL_DEPENDENCY=TRUE -DCMAKE_INSTALL_PREFIX=. ..
      • 如果未设置 SKIP_GL_DEPENDENCY cmake 变量,则必须设置 GLUT_DIR 和 GLUT_INC cmake 变量,否则在 cmake 配置阶段将抛出错误。
  • 为了构建和运行 AppEncD3D12 示例应用程序,需要 Windows 20H1 或更高版本。Visual Studio 2017 及更高版本应用于构建和运行此应用程序。此应用程序还需要 Agility SDK。要配置 Agility SDK:
    • 下载 Agility SDK(D3D12SDKVersion 606 或更高版本),并在生成项目时设置以下 cmake 变量
      • AGILITY_SDK_BIN:指向包含平台的 D3D12Core.dll 的目录。
      • AGILITY_SDK_VER:使用的 Agility SDK 版本的 D3D12SDKVersion。

      如果未设置上述 cmake 变量,则不会生成 AppEncD3D12 项目。

    • 在构建 AppEncD3D12 时,将创建包含 Agility SDK 中所需 dll 的 D3D12 目录以及 AppEncD3D12.exe。如果可执行文件移动到其他位置,请确保复制 D3D12 目录以及 AppEncD3D12.exe
  • 在 Windows 中,必须设置以下环境变量才能构建 SDK 附带的示例应用程序
    • DXSDK_DIR:指向 DirectX SDK 根目录。
    • VULKAN_SDK:指向 Vulkan SDK 安装目录。
    • 如果客户端拥有视频编解码器 SDK 8.0,则 CUDA 工具包和相关的环境变量是可选安装的。但是,如果客户端在其机器上拥有视频编解码器 SDK 8.1 或更高版本,则它们是强制性的。
  • 加上 系统要求所有操作系统平台的通用要求 下的所有要求

Linux 配置要求

  • 用于视频播放和显示的 X11 和 OpenGL、GLUT、GLEW 库
  • 如果客户端在其机器上拥有视频编解码器 SDK 8.1 或更高版本,则 CUDA 工具包是强制性的。
  • 来自 FFmpeg 项目的库和标头,可以使用发行版的软件包管理器下载和安装,也可以从源代码编译。
    • 示例应用程序已针对 FFmpeg-7.1 中的库和标头进行编译和测试。在 Linux 上配置 FFmpeg 时,建议不要使用“disable-decoders”选项。已知此配置在执行带有某些剪辑和/或导致意外行为的示例应用程序时会出现通道错误 (XID 31)。
  • 要构建/使用依赖于 FFmpeg 的示例应用程序,用户可能需要
    • 将目录(默认情况下为 /usr/local/lib/pkgconfig)添加到 PKG_CONFIG_PATH 环境变量。Makefile 需要此变量来确定 FFmpeg 标头的包含路径。
    • 将安装 FFmpeg 库的目录添加到 LD_LIBRARY_PATH 环境变量。这是解决 FFmpeg 库的运行时依赖项所必需的。
  • 存根库(libnvcuvid.so 和 libnvidia-encode.so)已作为 SDK 软件包的一部分包含在内,以便帮助在未安装 NVIDIA 驱动程序的系统上开发应用程序。SDK 中的示例应用程序将在构建过程中链接到这些存根库。但是,用户需要确保在运行示例应用程序时未引用存根库。需要安装与此 SDK 兼容的驱动程序,示例应用程序才能正常工作。
  • 需要安装 Vulkan SDK 才能构建和运行 AppMotionEstimationVkCuda 示例应用程序。
  • 加上 系统要求所有操作系统平台的通用要求 下的所有要求

Windows Subsystem for Linux (WSL) 配置要求

  • CUDA 工具包是使用视频编解码器 SDK 8.1 及更高版本的强制要求。
  • 如果默认情况下未添加目录 /usr/lib/wsl/lib 到 PATH 环境变量。这是包含 WSL 库的路径所必需的。
  • 来自 FFmpeg 项目的库和标头,可以使用发行版的软件包管理器下载和安装,也可以从源代码编译。
    • 示例应用程序已针对 FFmpeg-7.1 中的库和标头进行编译和测试。在 WSL 上配置 FFmpeg 时,建议不要使用“disable-decoders”选项。已知此配置在执行带有某些剪辑和/或导致意外行为的示例应用程序时会出现通道错误 (XID 31)。
  • 要构建/使用依赖于 FFmpeg 的示例应用程序,用户可能需要
    • 将目录(默认情况下为 /usr/local/lib/pkgconfig)添加到 PKG_CONFIG_PATH 环境变量。Makefile 需要此变量来确定 FFmpeg 标头的包含路径。
    • 将安装 FFmpeg 库的目录添加到 LD_LIBRARY_PATH 环境变量。这是解决 FFmpeg 库的运行时依赖项所必需的。
  • 加上 系统要求所有操作系统平台的通用要求 下的所有要求

所有操作系统平台的通用要求

  • CUDA 工具包可以从 http://developer.nvidia.com/cuda/cuda-toolkit 下载
  • Vulkan SDK 可以从 https://vulkan.lunarg.com/sdk/home 下载。或者,可以使用发行版的软件包管理器安装它。
  • NVIDIA 不提供对 FFMPEG 的支持;因此,最终用户和开发人员有责任随时了解针对 FFMPEG 报告的任何漏洞或质量错误。鼓励用户参考官方 FFMPEG 网站和社区论坛,以获取与 FFMPEG 二进制文件相关的最新更新、补丁和支持,并根据需要采取行动。

构建示例

视频编解码器 SDK 使用 CMake 构建示例。要构建示例,请按照以下步骤操作:

Windows

  1. 安装 Windows 的所有依赖项,如 Windows 配置要求 中所述
  2. 将 SDK 的内容解压到一个文件夹中。
  3. 在 Video_Codec_SDK_x.y.z/Samples 中创建一个名为“build”的子文件夹
  4. 在“build”文件夹中打开命令提示符,然后根据计算机上的 Visual Studio 版本运行以下命令。
    • Visual Studio 2022:cmake -G"Visual Studio 17 2022" -A"x64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=. ..
    • Visual Studio 2019:cmake -G"Visual Studio 16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=. ..
    • Visual Studio 2017:cmake -G"Visual Studio 15 2017" -A"x64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=. ..

    要构建具有 FFMPEG、freeglut 或 GLEW 依赖项的 VideoCodecSDK 应用程序,请确保按照 Windows 配置要求 中所述设置所需的标头和库。

    对于要生成的 AppEncD3D12 项目,必须按照 Windows 配置要求 中所述设置 cmake 变量 AGILITY_SDK_BIN 和 AGILITY_SDK_VER。将以下选项添加到上述命令以设置此 cmake 变量。

    • -DAGILITY_SDK_BIN=<包含 D3D12Core.dll 的 Agility SDK 文件夹的路径> -DAGILITY_SDK_VER=<Agility SDK 的 D3D12SDKVersion>

    如果省略上述选项,则不会生成 AppEncD3D12 项目。

此命令将在“build”文件夹中生成必要的 Visual Studio 项目文件。您可以在 Visual Studio 中打开 NvCodec.sln 文件并进行构建。或者,可以使用以下命令来构建解决方案

cmake --build . --target install --config Release

应用程序二进制文件将在 Samples/build 中提供。请注意,应用程序仅针对 x64 平台进行了验证。

Linux

  1. 安装 Linux 的所有依赖项,如 Linux 配置要求 中所述。
  2. 将 SDK 的内容解压到一个文件夹中。
  3. 在 Video_Codec_SDK_x.y.z/Samples 中创建一个名为“build”的子文件夹
  4. 使用以下命令在发布模式下构建示例。
    • cmake -DCMAKE_BUILD_TYPE=Release ..
    • make
    • make install

这将构建和安装示例应用程序的二进制文件。应用程序二进制文件将在文件夹 Samples/build 中提供。

Windows Subsystem for Linux

  1. 安装 Windows Subsystem for Linux 的所有依赖项,如 Windows Subsystem for Linux (WSL) 配置要求 中所述。
  2. 按照上面为 Linux 提供的构建和安装步骤操作。将不会构建使用 OpenGL 和 Vulkan 的应用程序。

注意

此 SDK 中已更改 NVENCODE API 标头中几个结构的布局。因此,建议用户相应地填充这些结构。

声明

本文档仅供参考,不应被视为对产品的特定功能、条件或质量的保证。NVIDIA Corporation(“NVIDIA”)对本文档中包含的信息的准确性或完整性不作任何明示或暗示的陈述或保证,并且对本文档中包含的任何错误不承担任何责任。NVIDIA 对使用此类信息或因使用此类信息而可能导致的侵犯专利或第三方其他权利的后果或使用不承担任何责任。本文档不构成对开发、发布或交付任何材料(如下定义)、代码或功能的承诺。

NVIDIA 保留随时对本文档进行更正、修改、增强、改进和任何其他更改的权利,恕不另行通知。

客户应在下订单前获取最新的相关信息,并应验证此类信息是否为最新且完整。

NVIDIA 产品的销售受 NVIDIA 标准销售条款和条件的约束,这些条款和条件在订单确认时提供,除非 NVIDIA 和客户的授权代表签署的单独销售协议(“销售条款”)另有约定。NVIDIA 在此明确反对将任何客户通用条款和条件应用于购买本文档中引用的 NVIDIA 产品。本文档不直接或间接地形成任何合同义务。

NVIDIA 产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命支持设备,也不适用于 NVIDIA 产品的故障或故障可能合理预期会导致人身伤害、死亡或财产或环境损害的应用。对于在上述设备或应用中包含和/或使用 NVIDIA 产品,NVIDIA 不承担任何责任,因此,此类包含和/或使用风险由客户自行承担。

NVIDIA 不作任何陈述或保证,保证基于本文档的产品将适用于任何特定用途。NVIDIA 不一定会执行每个产品的所有参数的测试。客户全权负责评估和确定本文档中包含的任何信息的适用性,确保产品适合且符合客户计划的应用,并执行应用所需的测试,以避免应用或产品的默认设置。客户产品设计的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的附加或不同条件和/或要求。NVIDIA 对可能基于或归因于以下原因的任何默认、损坏、成本或问题不承担任何责任:(i) 以任何违反本文档的方式使用 NVIDIA 产品或 (ii) 客户产品设计。

商标

NVIDIA、NVIDIA 徽标以及 cuBLAS、CUDA、CUDA Toolkit、cuDNN、DALI、DIGITS、DGX、DGX-1、DGX-2、DGX Station、DLProf、GPU、Jetson、Kepler、Maxwell、NCCL、Nsight Compute、Nsight Systems、NVCaffe、NVIDIA 深度学习 SDK、NVIDIA 开发者计划、NVIDIA GPU Cloud、NVLink、NVSHMEM、PerfWorks、Pascal、SDK Manager、Tegra、TensorRT、TensorRT Inference Server、Tesla、TF-TRT、Triton Inference Server、Turing 和 Volta 是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。其他公司和产品名称可能是与其关联的各自公司的商标。

© 2010-2025 NVIDIA Corporation。保留所有权利。 上次更新时间:2025 年 1 月 27 日。