计算机视觉/视频分析

适用于 Python GPU 加速视频处理的 PyNvVideoCodec 2.0 新增功能

Python 中的硬件加速视频处理变得更加便捷。 PyNvVideoCodec 是一个基于 NVIDIA Python 的库,专为 GPU 加速的视频编码、解码和转码而设计。该库直接构建于低层级的 NVIDIA 视频编解码器 SDK 之上,轻量高效,采用麻省理工学院开源许可,可通过 pip 轻松安装。其性能接近原生 SDK,使用简洁高效。

PyNvVideoCodec 2.0 是一项重要升级,使开发者、研究人员和工程师能够使用熟悉且灵活的 Python 语言构建高性能的视频处理工作流。

无论您是在进行视频分析、AI 预处理、媒体转码还是实时流媒体传输,PyNvVideoCodec 2.0 都能兼顾 C++ 的运行速度与 Python 的使用便捷性,同时带来更丰富的功能、更出色的性能以及更广泛的编解码器支持。继续阅读以了解详细信息。

Diagram showing a video processing pipeline. The flow begins with video input, passed to the PyNvVideoCodec Decode API. The decoded frames go through a processing block that handles pre-processing, training, inferencing, and post-processing. The results are passed to the PyNvVideoCodec Encode API, and finally output as video.
图 1。PyNvVideoCodec 视频处理管线可围绕 AI 或信号处理阶段实现 GPU 加速的解码和编码操作
Layered diagram showing the software stack for GPU-accelerated video processing using PyNvVideoCodec. The top layer includes user-level Python applications, which interact with PyNvVideoCodec APIs. These APIs interface with the NVIDIA Video Codec SDK. At the base of the stack is the NVIDIA GPU, which performs the actual hardware-accelerated video processing.
图 2。使用 PyNvVideoCodec 进行 GPU 加速视频处理的软件堆栈

PyNvVideoCodec 2.0 有哪些新功能?

PyNvVideoCodec 2.0 版本带来了多项强大功能,致力于优化 AI、广播、多媒体及流媒体应用中的视频工作流程,显著提升了在解码、编码和转码方面的性能与功能。

解码增强功能

PyNvVideoCodec 2.0 新增的解码增强功能包含以下内容:

  • 帧采样和查找:灵活的帧检索 – 顺序、随机、定期、批量、切片,甚至是目标帧速率。
  • 解码器缓存:非常适合短片段,无需完全重新初始化即可重复使用解码器。
  • 线程解码器:通过在后台线程中解码实现零延迟。
  • 基于缓冲区的解码:直接从内存缓冲区处理视频,这对于流式传输用例至关重要
  • 低延迟解码:支持无 B 帧序列的零延迟解码。
  • SEI 提取:提取 SEI 消息,允许访问 HDR 元数据、时间码和自定义用户数据。
  • 流式元数据:轻松检索关键帧索引、分辨率、位深度等。
  • 优化 GIL 处理:通过更好地处理 C++ 层中的全局解释器锁定 (GIL) ,提高多线程性能。
  • 多 GPU 解码:跨 GPU 扩展工作负载。
  • 扩展编解码器支持:H.264、HEVC、AV1、VP8、VP9、VC1、MPEG4/ 2/ 1。
  • 4:2:2 解码:解码 NV16、P210 和 P216 格式的高保真 4:2:2 H264 和 HEVC 内容。请注意,NVIDIA Blackwell 架构及之后均支持此功能。
  • 灵活的输出格式:解码为各种输出格式,包括 NV12、YUV420、YUV444、NV16、P010、P016 和 RGB24 (交错和平面) 。

编码增强功能

PyNvVideoCodec 2.0 新增的编码增强功能包含以下内容:

  • 实时编码器重新配置:即时更新编码设置,无需更改。
  • SEI 插入:插入 SEI 消息。
  • 多 GPU 编码:跨多个 GPU 分发编码。
  • 4:2:2 编码:在 H.264/ HEVC 中创建具有广播级质量的 4:2:2 流。请注意,NVIDIA Blackwell 架构及之后均支持此功能。
  • 支持扩展输入格式:NV12、YV12、IYUV、YUV444、YUV420_10BIT、YUV444_10BIT、NV16、P210、ARGB、ABGR、ARGB10 和 ABGR10。

转码增强功能

PyNvVideoCodec 2.0 新增了多项转码增强功能,具体包括以下内容:

  • 基于片段的转码:使用时间范围对视频片段进行转码,并针对基于深度学习的视频训练工作流程进行优化。

易于安装和定制

使用以下代码安装 PyNvVideoCodec,安装步骤与之前版本保持一致。

pip install PyNvVideoCodec

如需获取完整的源代码并进行自定义(例如启用 NVTX 分析),请从 NVIDIA NGC 下载并安装。

pip install PyNvVideoCodec.zip

如需调整内部结构或从源代码构建,请使用以下代码:

unzip PyNvVideoCodec.zip
cd PyNvVideoCodec
pip install .

开始使用 PyNvVideoCodec 2.0

PyNvVideoCodec 2.0 为 Python 开发者提供了简便、灵活且功能强大的 NVIDIA Video Codec SDK 性能支持。

为帮助您快速上手,示例 Python 应用程序和完整的 PyNvVideoCodec 文档均附带在 PyPI 和 NGC 包中。从简单的解码与重新编码脚本,到基于分段的转码流程,这些示例旨在无缝集成到您的实际工作流中

若要以极快速度启动新一代视频应用的开发,请访问 PyPINVIDIA NGC

 

标签