Skip to main content

pynvvideocodec (PyNvVideoCodec) is NVIDIA's Python library for hardware-accelerated video encode/decode on NVIDIA GPUs.

Project description

PyNvVideoCodec

PyNvVideoCodec is NVIDIA's Python-based library that provides simple yet powerful Python APIs for hardware-accelerated video encoding and decoding on NVIDIA GPUs.

PyNvVideoCodec is built on top of the Video Codec SDK and offers encode, decode, and transcode performance on par with it.

The library is distributed under MIT license and is officially supported by NVIDIA.

Features

Current PyNvVideoCodec version supports following features:

Decode Features

  • Decode statistics extraction: Enables extraction of low-level decode statistics—such as QP values, coding-unit types, and motion vectors—from H.264 and H.265 streams. These statistics provide valuable insights into video quality, content complexity, and encoder behaviour.
  • Seek and frame sampling: Provides efficient and flexible methods for fetching video frames in various modes, including sequential, random, periodic, indexed, batched, and sliced, as well as at a specified target frame rate.
  • Decoder caching: Optimizes decoding of short video clips through decoder caching and reconfiguration.
  • Threaded decoder: Supports decoding on separate threads, delivering pre-decoded frames with near-zero latency, enabling high-performance video processing pipelines.
  • Video processing from buffer: Supports video processing from memory buffers, reducing I/O overhead, enabling streaming applications.
  • Low latency decode: Offers zero-latency decoding for video sequences that do not contain B-frames.
  • SEI extraction: Supports the extraction of Supplemental Enhancement Information (SEI) messages, allowing access to additional information such as HDR information, timecodes, and custom user data.
  • Stream metadata access: Enables access to stream metadata, including frame width, height, bit depth, and keyframe indices, to enhance content management.
  • GIL handling: Improved multithreaded performance through better handling of Global Interpreter Lock (GIL) in C++ layer.
  • Multi-GPU decode: Enables multi-GPU decoding to efficiently handle larger workloads.
  • Extended codec support: Supports codecs H.264, HEVC, AV1, VP8, VP9, VC1, MPEG4, MPEG2, and MPEG1
  • 4:2:2 decode: Supports 4:2:2 decoding for both H.264 and HEVC formats on Blackwell GPUs (NV16, P210 and P216 surface formats).
  • Extended output formats : Decode to various output formats including NV12, YUV420, YUV444, NV16, P010, P016 and RGB24(interleaved and planar)

Encode Features

  • Encoder reconfiguration: Supports encoder reconfiguration, enabling dynamic updating of encoding parameters without recreating encoder instances.
  • SEI insertion: Allows insertion of SEI messages during encoding.
  • GIL handling: Improved multithreaded performance through better handling of Global Interpreter Lock (GIL) in C++ layer.
  • Multi-GPU encode: Enables multi-GPU encoding to efficiently handle larger workloads.
  • Codec support: Support encoding to codec H.264, HEVC, and AV1.
  • 4:2:2 encode: Supports 4:2:2 encoding for both H.264 and HEVC formats on Blackwell GPUs (NV16 and P210 surface formats).
  • Extended input formats: Encode from various input formats including NV12, YV12, IYUV, YUV444, YUV420_10BIT, YUV444_10BIT, NV16, P210, ARGB, ABGR, ARGB10, and ABGR10.

Transcode Features

  • Segment-based transcode: Enables transcoding of video segments based on timestamp ranges, ideal for content editing and partial processing.

What's New

v 2.1 (Latest)

  • Decode statistics extraction: Enables extraction of low-level decode statistics—such as QP values, coding-unit types, and motion vectors—from H.264 and H.265 streams. These statistics provide valuable insights into video quality, content complexity, and encoder behaviour.

  • Jupyter notebooks: Added two step-by-step, interactive Jupyter notebook tutorials—one demonstrating the SimpleDecoder API for easy video decoding and flexible frame sampling, and another showcasing the use of ThreadedDecoder in a real-world deep-learning object detection workflow.

  • Enhanced sample applications: Simplified, restructured and enhanced sample applications along with documentation to help developers learn, experiment, and build faster.

  • Enhanced Documentation: Comprehensive API reference and programming guide, enriched with practical code snippets to help developers quickly understand and use the library.

Distribution

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

This package on PyPI contains Python WHLs of the PyNvVideoCodec library and sample applications that demonstrate the use of the PyNvVideoCodec API. To install these please open the shell prompt, and run the following command.

$ pip install pynvvideocodec

Sample Applications and Documents

  • A package containing PyNvVideoCodec source code, Python sample applications and documentation can be downloaded from NVIDIA NGC.
  • For your convenience, the documents are also accessible online at PyNvVideoCodec Online Documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pynvvideocodec-2.0.5-cp314-cp314-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.14Windows x86-64

pynvvideocodec-2.0.5-cp314-cp314-manylinux_2_34_aarch64.whl (26.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

pynvvideocodec-2.0.5-cp313-cp313-manylinux_2_34_aarch64.whl (26.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

pynvvideocodec-2.0.5-cp312-cp312-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.12Windows x86-64

pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_34_aarch64.whl (26.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_28_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_28_aarch64.whl (26.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

pynvvideocodec-2.0.5-cp311-cp311-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.11Windows x86-64

pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_34_aarch64.whl (26.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_28_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_28_aarch64.whl (26.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pynvvideocodec-2.0.5-cp310-cp310-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.10Windows x86-64

pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_34_aarch64.whl (26.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_28_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_28_aarch64.whl (26.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

File details

Details for the file pynvvideocodec-2.0.5-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3c7b644b022656c34b24538a160f08dcb2e918f99b52989a5634b6dc6d3c2684
MD5 3d90151bf915fdb64172b5531ef6d0c4
BLAKE2b-256 8afe2ab0077074a5725e42c4bff46bd7aa016f08be5cc1f588adbd29b86fb5e6

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 77936288f83e8f165c3dcb6116fc753def916bb60889811da385f87c18fd1c90
MD5 ae2726210f848de5558bf130602bfddd
BLAKE2b-256 6446a9e03143a28240fbdc12237e2a676c9c88eb04bcad61d908872c0ef5dacb

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 b329b34833744454617bdad06fb2660c258684a69def2084a5a02f0c611ed16e
MD5 e57731c9d20560afcfaecb96915531d6
BLAKE2b-256 650735f32e4f7f9f769f1b638f92753b9d65b390cfc6fc3d388a91c4fef41ee9

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b833ad3ec37d4f20695118b5434360ed33e20d4167c6f3eedcb210706cf5ebe2
MD5 2e3b45fa6efe7bcf332f8e31cb5573aa
BLAKE2b-256 421b9ece8f356f2ca73fa78a0a82ccebbfed5445e76166df35f6d01da7fb7842

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 aa9c4d64abf43270172a63e58c0ba3c4da25dffffcf47f1a2c653ff1b2f1e875
MD5 7d89332237b9fb66d7665abfc4c12cda
BLAKE2b-256 a663d034ecbda1a2c237b24e04e329380762556ed7db20da8f0cd382077ea526

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fe66770c3cc75f598e226fe10bbca7c15fa306fb4f94c35ad66a06dadfe996f7
MD5 b76d6e5c42fe4832bf1c30c1f86b9321
BLAKE2b-256 b2a70ee3c766262ffe6241938bc4683c33ae383de00b58c98bc3b28ef69680ee

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6163b79422a8b422495dbf7dbbe3aa7e396e16e5f9cc993d3877645eef13af5a
MD5 1f9f217a2a6698eb80900b1277f43fdb
BLAKE2b-256 77fa3ffdbc1e910b1f7b2ee03a33a9103220473a3a1e7ccca341404b69f020df

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 92c97af9f8f174a01b2031e7c9ce392d29f095e16ef04f99f492bd0fb6852c60
MD5 865c8df1e5d393474829902c671008f3
BLAKE2b-256 06e082b07f64c6588e24571d3778653418c1e4dffed430204ff32edd9ca7f816

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e41070c84078b55d49f976b348e7f2cd08fca769c01ea2aeacf19c22a45c1e95
MD5 a3af7aa8933925954d83e1fa612a73bc
BLAKE2b-256 4bdf9b254f83f68cd079c918a0ad6ae2a2e51777fb43f34ab0ee35a1332469a6

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 abdea04af5e1cc8381722690c21addf58fd9833598f89c8132d6ab9d44acb35d
MD5 fb25b76e0ed63c34a33fd073cbacc5ce
BLAKE2b-256 548e23ab4fab67ee571b95a57961a191a79dacfbe37e81930c8ab1929a8a463a

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23a6d87c7decfd34fc0292ec466c11a08315b0feeb27e2dde73a20a299b84232
MD5 50e3595ec46d411a1ac65f2dfbc66bda
BLAKE2b-256 08a2483660b7894aec99688299c7108c450e6e7602418ef0952b1f4f38445a46

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 58cc1ad092fce2eff06eeb58a789ea5684b6532f195f0a5cf8a3d60232570dd3
MD5 2f867e7dca30c2684aaec74809143387
BLAKE2b-256 0ebe26113220a7b1b5816d2b437c1eca60dbd90b0d9707352e60b5cabb5ed853

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 a6fd8330d10c89dad5588a0fd29d7b7d072c09ca9f9faeb97ff24ab26d0a27cd
MD5 1e41d6e101cb4aa0a7c0237dca225c5c
BLAKE2b-256 2a20cef6fcb976d48451618d1c769aa93d94287977c5c288ffad953e84c56855

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bdc84feb9cd93c4ed77a4f6ef20fca32440dc558b320b45ca4b33ade24b514aa
MD5 16a7e1a1cac33a5ebaf98035f8aa0ddf
BLAKE2b-256 489fd6a959c691f1299415b6b83ddbe506c45ab1a4954f125740fb9de98cb225

See more details on using hashes here.

File details

Details for the file pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pynvvideocodec-2.0.5-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c016af39afe69532f5802f752516ab816214cbf612a4c0cec35b637aa0fd4a6
MD5 7ec91407caa15bce07513b9d184e406b
BLAKE2b-256 ae5289b8ca3143f2ebf6e52a9f20c9b09f8049c07d7d7127f9f858d516162a86

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page