Release Notes#

Key Features and Enhancements#

  • NVIDIA Jetson support: Brings easy-to-use, GPU-accelerated Python video APIs to Jetson, making it easy to build video and AI pipelines for robotics and other edge devices.

  • NVIDIA DGX Spark support: Unlocks high-throughput, Python-based video decode and encode on DGX Spark, speeding up video curation, experimentation, prototyping, training, and deployment of video and AI pipelines

  • SimpleDecoder in-memory input support: SimpleDecoder now accepts video data directly from bytes, bytearray, memoryview, or any seekable BinaryIO stream, such as io.BytesIO, an open file handle, a tar archive member, or an S3/HTTP range reader. This enables decoding from network buffers or object-storage streams without writing to a temporary file, and all input types support the full seekable API including random frame access and batch retrieval.

  • New samples:

    • Transcode: The new transcode.py sample demonstrates end-to-end GPU transcoding with demuxing, NVDEC decode, NVENC encode, muxing, and audio passthrough. The pipeline preserves source A/V interleave and bit-exact PTS, making it a reference implementation for high-throughput format conversion and codec migration workflows.

    • Encode with muxing: The encode.py sample now supports muxing encoded video directly into container formats (MP4, MOV). Muxing is triggered automatically by the output file extension, so no separate muxing step is required. Supported combinations are H.264/HEVC/AV1 into MP4 and H.264/HEVC into MOV.

    • SimpleDecoder from memory: The new simple_decode_from_memory.py sample demonstrates decoding from bytes, bytearray, memoryview, and seekable BinaryIO.

    • Face protection: The face_protect_tutorial.ipynb notebook demonstrates face detection with a TensorRT-optimized RetinaFace model and applies GPU-accelerated Gaussian blur to protect detected face regions.

Deprecation Notices#

The following features and methods are deprecated in this release and will be removed in future versions:

  • nvcv_image() method: The nvcv_image() method in the DecodedFrame class is deprecated and will be removed in a future version. This method was originally designed as a workaround for CV-CUDA tensor representation but is no longer the recommended approach.

Users are encouraged to migrate to alternative methods for CV-CUDA tensor conversion. The deprecated method will continue to function in this release but will emit deprecation warnings.

Important

Deprecated features may be removed without further notice in major version updates. Please update your code to use supported alternatives.

Limitations and Known Issues#

  • PyNvVideoCodec uses the FFmpeg binaries for demuxing and muxing of audio and video content.

    NVIDIA will not update the FFmpeg binaries included in our release package as these binaries are available, maintained and updated by the FFmpeg open-source community.

    Attention

    NVIDIA does not provide support for FFMPEG; therefore, it is the responsibility of end users and developers, to stay informed about any vulnerabilities or quality bugs reported against FFMPEG. Users are encouraged to refer to the official FFmpeg website and community forums for the latest updates, patches, and support related to FFmpeg binaries and act as they deem necessary.

  • WebM Container Seeking Limitations: WebM containers may experience reduced seek accuracy due to codec-specific behavior of VP8/VP9 streams.

    During decode, some frames in VP8/VP9 (commonly used in WebM containers) are marked as non-displayable, causing discrepancies between the reported total frame count from container metadata and the actual displayable frame count. This can result in frame count mismatches and potential seeking issues near the end of video streams.

    PyNvVideoCodec implements workarounds to handle these discrepancies, including special packet filtering and frame count adjustments for WebM containers. However, users should be aware that seek operations may be less precise compared to other container formats like MP4.

    Note

    Similar limitations may also affect FLV container that use VP8/VP9 codecs.

  • SimpleDecoder in-memory input limitations:

    • reconfigure_decoder() accepts file paths only. reconfigure_decoder() cannot retarget a decoder at a bytes or BinaryIO source. Callers that need to process successive in-memory clips must construct a new SimpleDecoder per clip rather than reusing a pooled instance.

    • Scanned stream metadata unsupported for BinaryIO streams. Passing need_scanned_stream_metadata=True and calling get_scanned_stream_metadata() raises an error when the source is a BinaryIO stream, because the background scan thread cannot safely share a Python stream object. This option works normally for file-path and bytes inputs.

    • Containers without a header frame count rejected for BinaryIO streams. Formats such as FLV and WebM that do not store a frame count in their headers are not supported as BinaryIO inputs, because determining the frame count requires a full sequential scan. File-path and bytes inputs are not affected.

Package Contents#

This package contains the following:

  1. Sample applications demonstrating usage of PyNvVideoCodec APIs for encoding, decoding and transcoding use cases.

    • [.\samples\basic] - Basic sample applications

    • [.\samples\advanced] - Advanced sample applications

  2. Jupyter notebooks demonstrating usage of PyNvVideoCodec APIs.

    • [.\samples\jupyter]

  3. Requirements files specifying dependencies.

    • [.\samples\requirements.txt] - Required libraries to run the sample applications and Jupyter notebooks

    • [.\benchmarks\requirements.txt] - Required libraries to run the benchmark scripts

  4. Python Bindings

    • [.src\PyNvVideoCodec]

  5. Video codec helper classes and utilities

    • [.src\VideoCodecSDKUtils]

  6. FFmpeg libraries and source code

    • [.external\ffmpeg]

  7. Documents

    • [.docs]

  8. Benchmarks contains performance benchmarking scripts for testing various PyNvVideoCodec features including segmented transcoding, decoder caching, and frame sampling capabilities.

    • [.\benchmarks\]

The sample applications provided in the package are for demonstration purposes only and may not be fully tuned for quality and performance. Hence the users are advised to do their independent evaluation for quality and/or performance.