Get Started with PyNvVideoCodec

PyNvVideoCodec is NVIDIA’s Python based video codec library that provides simple yet powerful Python APIs for hardware accelerated video encode and decode on NVIDIA GPUs.

PyNvVideoCodec is the successor of VPF (Video Processing Framework). It is distributed under MIT license and is officially supported by NVIDIA.

PyNvVideoCodec library internally uses core C/C++ video encode and decode APIs of Video Codec SDK and provides easy to use Python APIs on it. The library offers encode and decode performance close to Video Codec SDK.

High-level block diagram showing PyNvVideoCodec library
[ Figure 1. High level block diagram showing PyNvVideoCodec library in the DL/Multimedia code stack.]

PyNvVideoCodec library is distributed in two formats: binary distribution via PyPl and source code distribution via NVIDIA NGC. In both cases, it can be installed using a single pip install command.

The Python APIs provided by the library are easy to use. These APIs support popular data formats that are commonly understood by DL frameworks like PyTorch. This enables applications to seamlessly exchange data between DL frameworks and NVIDIA’s video encode/decode hardware accelerators.

The library contains Python samples which demonstrate the usage of APIs for decode, encode and transcode use cases. Additionally, these samples feature an example of how to exchange data between the PyNvVideoCodec APIs and popular DL frameworks such as PyTorch.

System Requirements

NVIDIA Drivers

NVIDIA Windows display driver - 531.61 or newer.
NVIDIA Linux display driver - 530.41.03 or newer.
Get most recent NVIDIA Display Driver

Supported NVIDIA GPUs

GPU families - Turning, Ampere, Ada, and Hopper

Supported Operating Systems

Windows and Linux

PyNvVideoCodec Latest Version

  • Pip install from PyPl (recommended)

    Ready to use Python WHLs of PyNvVideoCodec library for popular configurations are available on PyPl and can be installed by running the following command on shell prompt.

    pip install pynvvideocodec

  • Download source on NGC and build 

    Package containing PyNvVideoCodec source code, its dependencies, Python sample applications and documents is available on NVIDIA NGC. To install PyNvVideoCodec library please download zip file containing the latest version of PyNvVideoCodec from the NVIDIA NGC catalog page (located in the file browser tab) onto your local machine. Then, open the shell prompt, go to the folder containing the zip file and execute the following command, replacing "'' with the actual name of the downloaded zip file.

    pip install

Please use this method of installation in case you need any customizations in PyNvVideoCodec library. e.g. enabling NVTX markers for profiling, support for specific surface format etc.

Release Notes

This release of PyNvVideoCodec includes support for the following features:

  • Codecs: H.264, HEVC, AV1.

  • Surface formats: NV12 (8 bit), YUV 4:2:0 (10 bit), YUV 4:4:4 (8 and 10 bit).

  • Video container formats: MP4, AVI and MKV.

  • DLPack support to facilitate data exchange with popular DL frameworks like PyTorch and TensorRT.

  • CUDA Array Interface support to facilitate data exchange with NVIDIA's CV-CUDA library.

  • CUDA stream support for optimizing throughput.

  • Contains a collection of Python samples demonstrating API usage.

Python Samples

The library has a collection of Python samples that illustrate use of PyNNVideoCodec APIs for video decoding, encoding and transcoding use cases.

PyNvVideoCodec package containing sample applications and documents can be downloaded from 


Key documents can be easily accessed from the PyNvVideoCodec package on NVIDIA NGC.

For your convenience, these documents are also accessible online at PyNvVideoCodec online documents.


To provide feedback, request additional features, or report support issues, please contact us here or use the Video Codec Developer Forum.