PyNvVideoCodec 1.0

自述文件

发行说明

主要特性和增强功能

此版本的 PyNvVideoCodec 包括对以下特性的支持

  • 编解码器
    • H.264
    • HEVC
    • AV1
  • 表面格式
    • NV12 (8 位)
    • YUV 4:2:0 (10 位)
    • YUV 4:4:4 (8 位和 10 位)
  • 互操作性
  • CUDA 流支持,用于优化吞吐量。
  • 包含 Python 示例应用程序的集合,演示 API 的用法。

限制和已知问题

  • DLPack 互操作性仅支持 NV12。
  • 目前,仅支持可分页分配。
  • PyNvVideoCodec 使用 FFmpeg 二进制文件来解复用音频和视频内容。

    NVIDIA 不会更新我们的发行包中包含的 FFmpeg 二进制文件,因为这些二进制文件由 FFmpeg 开源社区提供、维护和更新。

    注意

    NVIDIA 不为 FFMPEG 提供支持;因此,最终用户和开发人员有责任随时了解针对 FFMPEG 报告的任何漏洞或质量缺陷。 建议用户参考 FFmpeg 官方网站和社区论坛,获取有关 FFmpeg 二进制文件的最新更新、补丁和支持,并根据需要采取行动。

软件包内容

此软件包包含以下内容

  1. 示例应用程序,演示 PyNvVideoCodec API 在编码、解码和转码用例中的用法。
    • [.\samples\]
  2. Python 绑定
    • [.src\PyNvVideoCodec]
  3. 视频编解码器帮助类和实用程序
    • [.src\VideoCodecSDKUtils]
  4. FFmpeg 库和源代码
    • [.external\ffmpeg]
  5. 文档
    • [.docs]

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

系统要求

表 1. 系统要求
操作系统
  • Windows 10 或更高版本
  • Ubuntu 18.04 或更高版本
GPU
驱动程序
  • NVIDIA Windows 显示驱动程序 531.61 或更高版本
  • NVIDIA Linux 显示驱动程序 530.41.03 或更高版本

获取最新 NVIDIA 显示驱动程序

Python
CMake
Visual Studio(仅限 Windows)
CUDA 工具包 最新 CUDA 工具包
运行示例应用程序所需的 Python 模块 PyCUDAPyTorch

Windows Subsystem for Linux (WSL) 配置要求

  • 如果默认未添加目录 /usr/lib/wsl/lib 到 PATH 环境变量,请添加它。 这是包含 WSL 库路径所必需的。
  • 加上 系统要求 下的所有要求

安装 PyNvVideoCodec Python 模块

注意

此项目将下载并安装其他第三方开源软件项目 - DLPack。 使用前请查看这些开源项目的许可条款。

可以使用以下方式安装 Python 模块。

从 PyPI 安装

  1. PyNvVideoCodec 的即用型 Python WHL (Wheel) 软件包托管在 PyPI 上。
  2. 打开 bash/shell 提示符并运行
    复制
    已复制!
                

    $>pip install "PyNvVideCodec"

  3. 这是推荐的方式。

在 NVIDIA NGC 上从源代码构建和安装

包含 PyNvVideCodec Python 模块源代码、所有依赖项、Python 示例应用程序和文档的软件包托管在 NVIDIA NGC 上。

按照以下步骤操作:

  1. NVIDIA NGC 下载最新软件包的 zip 文件。
  2. 在下载 zip 文件的同一目录下打开 bash/shell 提示符,并运行以下命令,将“PyNvVideCodec.zip”替换为下载的 zip 文件的实际名称
    复制
    已复制!
                

    $>pip install "PyNvVideCodec.zip"

  3. 您可以从软件包访问文档和 Python 示例应用程序。

如果您需要在 PyNvVideoCodec Python 模块上进行任何自定义,例如启用用于分析的 NVTX 标记,请使用此方法

按照以下步骤构建自定义版本

  1. 将源软件包解压缩到目录中。
  2. 对源代码进行必要的修改。
  3. setup.py 所在的同一目录下,运行以下命令
    复制
    已复制!
                

    $>pip install .

运行示例

PyNvVideoCodec 软件包在 PyNvVideoCodec/samples 文件夹中包含以下 Python 示例。 对于每个示例,您可以使用 -h 选项查看可用的命令行选项。

表 2. 每个示例应用程序的命令行选项
示例应用程序 功能 示例命令行
Decode.py 说明媒体文件的解复用和解码。
复制
已复制!
            

Decode.py -g 0 -i ip_media_file_path -o op_yuv_file_path -d 1

DecodeAsync.py 演示如何将媒体文件解码为在非默认 cuda 流上分配的输出表面。有关更多详细信息,请参阅 Stream Aware Allocations
复制
已复制!
            

DecodeAsync.py -g 0 -i ip_media_file_path -o op_yuv_file_path -s

DecodePerf.py 测量每个进程的解码性能(FPS)
复制
已复制!
            

DecodePerf.py -g 0 -i ip_media_file_path -d 1 -n 1

Encode.py 说明使用 CUDA 设备缓冲区作为输入来编码帧。
复制
已复制!
            

Encode.py -i ip_yuv444_file_path -o op_bistream_path -s 1280x720 -if yuv444 -c hevc -json encode_config.json

EncodeFromCPUBuffer.py 说明使用主机内存缓冲区作为输入来编码帧。
复制
已复制!
            

Encode.py -i ip_yuv444_file_path -o op_bistream_path -s 1280x720 -if yuv444 -c hevc -cb 1 -json encode_config.json

EncodeReconfigure.py 演示在运行时更改比特率,而无需重置编码器会话。该应用程序将比特率降低一半,然后在 100 帧后将其恢复为原始值。
复制
已复制!
            

Encode.py -i ip_yuv444_file_path -o op_bistream_path -s 1280x720 -if yuv444 -c hevc -json encode_config_lowlatency.json

EncodePerf.py 测量每个进程的编码性能(FPS)。
复制
已复制!
            

Encode.py -i ip_yuv444_file_path -o op_bistream_path -s 1280x720 -if yuv444 -c hevc -json encode_config_perf.json -n 3

Transcode.py 演示输入视频流的转码。
复制
已复制!
            

Transcode.py -g 0 -i ip_media_file_path -o op_media_file_path -c h264

TranscodeWithPostProc.py 演示与 PyTorch 的零复制数据交换,执行输入视频流的转码,在解码输出上运行钳位内核并将其编码回去。
复制
已复制!
            

TranscodeWithPostProc.py -g 0 -i ip_media_file_path -o op_media_file_path

声明

本文档仅供参考,不得视为对产品特定功能、条件或质量的保证。 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 Deep Learning SDK、NVIDIA Developer Program、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-2024 NVIDIA Corporation。 保留所有权利。 上次更新时间:2024 年 4 月 15 日。