Video Codec SDK (original) (raw)

NVIDIA Video Codec SDK

A comprehensive set of APIs including high-performance tools, samples and documentation for hardware-accelerated video encode and decode on Windows and Linux.

Get Started Notify Me for Future Releases

img-alt-text

Video apps and streaming enabled by NVENC and NVDEC on consumer laptops, desktops and datacenters ensure optimized performance across platforms.

Hardware-Based Decoder and Encoder

NVIDIA GPUs contain one or more hardware-based decoders and encoders (separate from the CUDA cores) which provide fully accelerated hardware-based video decoding and encoding for several popular codecs. This provides two benefits:

GPU hardware accelerator engines for video encoding (referred to as NVENC) and video decoding (referred to as NVDEC) support faster-than-real-time video processing, which makes them suitable for use in multiple applications, including video transcoding, video data compression/decompression for deep learning, game broadcasting, virtual desktops, cloud gaming, secure video playback, etc. Video Codec SDK exposes the APIs that let you harness the NVENC and NVDEC for all video encoding/decoding capabilities of these engines. NVIDIA’s newest GPU architecture, Blackwell, further enhances the performance and quality of NVENC and NVDEC. The ultra-high quality (UHQ) mode for HEVC introduced in SDK v12.2 extends to AV1 in SDK v13.0 (January 2025). In addition, the Blackwell architecture supports 422 H.264; 422 HEVC; 422i, 420i H.264; multi-view HEVC, and improved H.264 throughput per NVDEC.

Hardware-Accelerated Video Encoding - NVENC

NVIDIA GPUs contain an on-chip hardware-accelerated video encoder (NVENC), which provides video encoding for H.264, HEVC (H.265) and AV1 codecs.

The software enhancements in SDK v13.0 enable extending ultra-high quality (UHQ) mode to AV1 encoding.. This makes AV1 encoding on Blackwell NVENC comparable to software AV1 encoding with ~3X throughput. The UHQ HEVC mode was introduced in the SDK v12.2 in the Ada generation.

Blackwell introduces 422 progressive and interlaced encode and decode support in hardware, enabling professional use cases in media and entertainment, video editing and broadcast. Multiple NVENCs working together can achieve performance as high as 8K video at 60FPS+.

Video Codec SDK 13.0 also introduces MV-HEVC for hardware-accelerated stereo encoding to address use cases in broadcast, auto and AR/VR headsets.

Using rich APIs in Video Codec SDK, NVENC can be used in a wide range of use cases requiring latency as low as cloud gaming and quality as high as OTT streaming and studio broadcasting. NVIDIA’s Python video bindings, such as PyNvVideoCodec, enable deep learning applications to harness the power of NVENC for video data curation and archiving.

Note: These graphs showcase performance on NVIDIA data center A10, L4, and L40S.

Bitrate savings are BD-BR based on PSNR, averaged across a large variety of content (several hundreds of video clips), using FFmpeg.

Only data center GPUs are presented on the benchmark graphs for clarity, but an equivalent workstation GPU with the same architecture performs similarly​. To learn more about the hardware details, the process and software configuration used for generating the above data, please refer to this detailed documentation​.

Hardware-Accelerated Video Decoding - NVDEC

NVIDIA GPUs contain an on-chip hardware-accelerated video decoder (NVDEC), which provides video decoding for several popular codecs.

The APIs in Video Codec SDK enable the software developers to harness the power of NVDEC for many use cases, ranging from traditional use cases such as secure video playback to accelerating video data ingestion and decoding for DNN training and inference.

NVDEC supports hardware-accelerated decoding of the following video codecs on Windows and Linux platforms: MPEG-2, VC-1, H.264 (AVCHD), H.265 (HEVC), VP8, VP9, and AV1 (see table below for codec support for each GPU generation).

With Blackwell GPUs, NVDEC doubles the video decoding throughput for H.264 decoding and adds support for 422 decoding for H.264 and HEVC codecs.


Video Codec APIs

NVIDIA has provided hardware-accelerated video processing on GPUs for over a decade through the NVIDIA Video Codec SDK.

Video Codec SDK is a comprehensive set of APIs, high-performance tools, sample applications, reusable code, and documentation for hardware-accelerated video encoding and decoding on Windows and Linux.

The NVENCODE and NVDECODE APIs in the NVIDIA Video Codec SDK are C-style APIs, useful for high-performance encoding and decoding using NVENC and NVDEC, respectively. They expose most of the hardware functionality, along with other codec features that are commonly used. Video Codec SDK also provides a set of reusable code in the form of C++ classes built on top of the NVENCODE/NVDECODE APIs, which the applications can easily integrate. NVENCODE/NVDECODE APIs are comprehensive in nature, and expose a large number of codec capabilities, including advanced features.

DirectX and Vulkan Video, on the other hand, provide low-level, hardware-agnostic APIs, and attempt to provide more precise control over resource/memory allocation, task scheduling, and work submission to video hardware engines.

Whether you prefer DirectX or Vulkan, you can combine flexible GPU-accelerated video encoding and decoding with other GPU acceleration, like 3D and AI, using the language of your choice.

The low-level Vulkan Video extensions are also attractive to developers of popular open-source streaming media frameworks such as GStreamer and FFmpeg, both of which are being actively ported to Vulkan Video. The cross-platform availability of Vulkan will enable accelerated GPU processing for these frameworks across multiple platforms without needing to port to multiple proprietary video APIs. Please refer to the Vulkan Video getting started page for more details.

PyNvVideoCodec is another set of APIs introduced in Q4 2023, which provides simple APIs for harnessing video encoding and decoding capabilities when working with videos in Python. PyNvVideoCodec is a library that provides python bindings over C++ APIs for hardware accelerated video encoding and decoding. Major advantages of PyNvVideoCodec are: simple installation process, easy APIs with advanced features, and direct interoperability with many deep learning frameworks such as PyTorch.

Video Codec SDK, DirectX Video, Vulkan Video, and PyNvVideoCodec provide comprehensive support for GPU-accelerated video workflows. NVIDIA will continue to support these APIs, providing developers multiple options to choose from, and use the ones that best suit their needs.

Vulkan Video DirectX Video NVIDIA Video Codec SDK PyNvVideoCodec
Platform Windows and Linux Windows Windows and Linux Windows and Linux
Benefits Low-Level ControlNative Vulkan IntegrationEasy for Vulkan developersMulti-Vendor Low-Level ControlNative DirectX and Windows integrationEasy for DirectX developersMulti-Vendor Low- and high-level controlNative Integration in custom pipelinesUseful for users with less knowledge of Vulkan and DirectXEasy for C, C++ developersNVIDIA Proprietary APIComprehensive feature set Python bindings over C++ Video Codec SDK wrapper classesEasy for Python developersNVIDIA Proprietary API
Native API interface Vulkan Graphics D3D11 (Decode only) and D3D12 D3D9, D3D10, D3D11, D3D12 (Encode only) CUDA (Encode and decode) CUDA (Encode and decode), PyTorch, TensorRT

Partners and Examples


Latest Video Codec SDK News

See all Video Codec SDK blogs


Resources


Get started developing with Video Codec SDK.

Get Started