nvidia-deepstream-videodecode-cu13
This project is currently not accepting contributions.
GPU-resident video decode via NVIDIA DeepStream — single-wheel install
that bundles the DS shared libraries in a flat _libs/ directory and
configures GStreamer + libv4l plugin discovery on Python import.
Install
apt update
apt install gstreamer1.0-tools gstreamer1.0-plugins-{base,good,bad,ugly} \
gstreamer1.0-libav python3-gi python3-gst-1.0 libv4l-0
pip install nvidia-deepstream-videodecode-cu13
Quickstart
# Built-in selftest — verifies lib resolution, plugin discovery, CUDA context.
deepstream-videodecode-selftest
# Decode a file
python3 examples/decode_example.py /path/to/video.mp4
# File + live RTSP source
python3 examples/decode_example.py /path/to/video.mp4 \
--rtsp rtsp://10.24.217.130:8554/ --workers 4 --frames 16
Successful output ends with frames shape : (N, H, W, 3) on
torch.uint8, cuda:0 — the GPU tensor is ready for downstream consumers
with no D2H copy.
Public API
from nvidia.deepstream_videodecode import (
DecodePool, # pool of N file-decode pipelines on N threads
StreamHandle, # one persistent pipeline for an RTSP/URI stream
DecodeFrames, # @dataclass: frames, n_kept, n_total, fps, error
probe_metadata, # GStreamer-only metadata probe (no decode, no PyAV)
lib_dir, # path to the bundled _libs/ directory
)
probe_metadata(data) -> (frame_count, fps, duration_sec, width, height, codec)
Read container metadata from raw bytes using GStreamer only —
no frames are decoded, no external library (PyAV / libmediainfo) needed.
DecodePool.decode(data, *, target_indices, codec="", max_frames, timeout_sec) -> DecodeFrames
Decode raw container bytes on a pool worker and keep the frames whose
decode-order index is in target_indices.
from nvidia.deepstream_videodecode import DecodePool, probe_metadata
pool = DecodePool(num_workers=8)
data = open("/path/to/video.mp4", "rb").read()
fc, fps, dur, w, h, codec = probe_metadata(data)
import numpy as np
indices = np.linspace(0, fc - 1, 8, dtype=int).tolist()
out = pool.decode(data, target_indices=indices, codec=codec,
max_frames=len(indices))
# out.frames: CUDA tensor (out.n_kept, H, W, 3) uint8 — no D2H copy.
What ships in the wheel
nvidia/
└── deepstream_videodecode/
├── __init__.py
├── _ds_dec.py # DecodePool / StreamHandle API
├── _runtime.py # _libs/ path resolver
├── _selftest.py # deepstream-videodecode-selftest CLI
├── _version.py
└── _libs/ # flat layout
├── libnvbufsurface.so
├── libnvbufsurftransform.so (~26 MB)
├── libnvbuf_fdmap.so
├── libnvds_meta.so
├── libnvdsbufferpool.so
├── libnvdsgst_helper.so
├── libnvdsgst_meta.so
├── libgstnvdsseimeta.so
├── libgstnvcustomhelper.so
├── libnvv4l2.so
├── libcuvidv4l2.so
├── libv4l2.so.0 (symlink → libnvv4l2.so)
├── libgstnvvideo4linux2.so (GStreamer plugin)
├── libgstnvvideoconvert.so (GStreamer plugin)
└── v4l_plugins/
└── libcuvidv4l2_plugin.so (libv4l plugin)
Troubleshooting
GStreamer element creation failed: ['nvdec', 'nvvconv']
GStreamer caches a plugin registry at ~/.cache/gstreamer-1.0/. If the
cache was built before the CUDA libraries were installed, it records
"this plugin failed to load" and never retries.
rm -rf ~/.cache/gstreamer-1.0/
python3 -c "import nvidia.deepstream_videodecode" # forces rescan
gst-inspect-1.0 nvv4l2decoder # should now print Factory Details
libnppig.so.13: cannot open shared object file
CUDA NPP runtime is missing:
apt install -y --no-install-recommends cuda-libraries-13-0
deepstream-videodecode-selftest says "DeepStream libs not found"
The _libs/ directory is empty or missing. Reinstall:
pip install --force-reinstall --no-deps nvidia-deepstream-videodecode-cu13
Opening in BLOCKING MODE printed during decode
Informational message from nvv4l2decoder — not an error. Silence with:
GST_DEBUG=2 python3 your_script.py
dlsym failed: libcuvidv4l2.so: undefined symbol: libv4l2_plugin
You're on an old wheel that placed libcuvidv4l2_plugin.so alongside
the main libs. Current builds isolate it in v4l_plugins/. Reinstall:
pip install --force-reinstall nvidia-deepstream-videodecode-cu13
Release files for nvidia-deepstream-videodecode-cu13 9.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nvidia_deepstream_videodecode_cu13-9.0.2-py3-none-manylinux_2_34_x86_64.whl | Python 3 | none | Linux glibc 2.34+ x86-64 | Details |
Release files / nvidia_deepstream_videodecode_cu13-9.0.2-py3-none-manylinux_2_34_x86_64.whl
| Download URL | nvidia_deepstream_videodecode_cu13-9.0.2-py3-none-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 15.8 MB |
| Tags | Linux glibc 2.34+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
e26ecc068bd7da7538e8fb3388b9943207c2a498ad85e77e7beb374c80846cfc
|
|
BLAKE2b-256 checksum How to use checksums |
4a41bb3f7ed4a42ad9f33931f1bafeab45084788370f5876fc0c565fdbff5a70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|