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

img-alt-text

NVIDIA GeForce Now is made possible by leveraging NVENC in the datacenter and streaming the result to end clients

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. With decoding/encoding offloaded, the graphics engine and the CPU are free for other operations.

GPU hardware accelerator engines for video decoding (referred to as NVDEC) and video encoding (referred to as NVENC) support faster-than-real-time video processing, which makes them suitable to be used for transcoding applications, in addition to video playback. NVIDIA’s newest GPU architecture, Ada, features up to 3X NVENC and 4X NVDEC. Video Codec SDK lets you harness the NVENC and NVDEC for real-time 8K 60FPS AV1 and HEVC video on Ada Lovelace architecture.

Hardware-Accelerated Video Encoding - NVENC

Introducing AV1 encoding with Video Codec SDK 12.0 on NVIDIA’s Ada architecture. AV1 is the state of the art video coding format that supports higher quality with better performance compared to H.264 and HEVC. On Ada, multiple NVENC coupled with AV1 enables encoding 8k video at 60fps alongside a higher number of concurrent sessions. With complete encoding (which is computationally complex) offloaded to NVENC, the graphics engine and the CPU are free for other operations. For example, in a game recording and streaming scenario like streaming to Twitch.tv using Open Broadcaster Software (OBS), encoding being completely offloaded to NVENC makes the graphics engine bandwidth fully available for game rendering.

NVENC enables streaming applications at high quality and ultra-low latency without utilizing the CPU, encoding at very high quality for archiving, OTT streaming, web videos, and encoding with ultra-low power consumption per stream (watts/stream).

Note: These graphs showcases performance on NVIDIA datacenter T4, A10 and L40.

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

Only datacenter GPUs are presented on the benchmark graphs for clarity but equivalent workstation GPU with same architecture performs similarly​. To learn more about the hardware details, the process and software configuration used for generating above data, please refer to this detailed documentation​.
GPU H.264 (AVCHD) YUV 4:2:0 H.264 (AVCHD) YUV 4:4:4 H.264 (AVCHD) LOSSLESS H.265 (HEVC) YUV 4:2:0 H.265 (HEVC) YUV 4:4:4 H.265 (HEVC) LOSSLESS AV1
MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res.
Maxwell (1st Gen)* 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 N/A N/A N/A N/A N/A N/A N/A N/A
Maxwell (2nd Gen) 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 N/A N/A N/A N/A N/A N/A
Maxwell (GM206) 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 N/A N/A
Pascal 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 10-bit 8192 x 8192** 10-bit 8192 x 8192** 10-bit 8192 x 8192** N/A N/A
Volta 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 10-bit 8192 x 8192 10-bit 8192 x 8192 10-bit 8192 x 8192 N/A N/A
Turing 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 10-bit 8192 x 8192 10-bit 8192 x 8192 10-bit 8192 x 8192 N/A N/A
Ampere
(A100)
No No No No No No No No No No No No No No
Ampere
(non A100)
8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 10-bit 8192 x 8192 10-bit 8192 x 8192 10-bit 8192 x 8192 N/A N/A
Ada 8-bit 4096 x 4096 8-bit 4096 x 4096 8-bit 4096 x 4096 10-bit 8192 x 8192 10-bit 8192 x 8192 10-bit 8192 x 8192 10-bit 8192 x 8192

* Except GM108 and GP108 (not supported)

** Except GP100 (is limited to 4K resolution)

Hardware-Accelerated Video Decoding - NVDEC

NVIDIA GPUs contain a hardware-based decoder (referred to as NVDEC) which provides fully accelerated hardware-based video decoding for several popular codecs. With complete decoding offloaded to NVDEC the graphics engine and the CPU are free for other operations. NVDEC supports much faster than real-time decoding which makes it suitable to be used for transcoding applications, in addition to video playback applications.

NVDECODE API enables software developers to configure this dedicated hardware video decoder. This dedicated accelerator 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).

GPU *H.265 (HEVC) 4:4:4 H.265 (HEVC) 4:2:0 H.264 (AVCHD) 4:2:0 VP9 VP8 MPEG-2 VC-1 AV1
MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res.
Kepler N/A N/A N/A N/A 8-bit 4096 x 4096 N/A N/A N/A N/A 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Maxwell (1st Gen)* N/A N/A N/A N/A 8-bit 4096 x 4096 N/A N/A N/A N/A 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Maxwell (2nd Gen) N/A N/A N/A N/A 8-bit 4096 x 4096 N/A N/A 8-bit 4096 x 4096 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Maxwell (GM206) N/A N/A 10-bit 4096 x 2304 8-bit 4096 x 4096 8-bit 4096 x 2304 8-bit 4096 x 4096 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Pascal N/A N/A 12-bit 8192 x 8192** 8-bit 4096 x 4096 12-bit**** 8192 x 8192** 8-bit 4096 x 4096*** 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Volta N/A N/A 12-bit 8192 x 8192 8-bit 4096 x 4096 12-bit 8192 x 8192 8-bit 4096 x 4096 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Turing 12-bit 8192 x 8192 12-bit 8192 x 8192 8-bit 4096 x 4096 12-bit 8192 x 8192 8-bit 4096 x 4096 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Ampere
(A100)
12-bit 8192 x 8192 12-bit 8192 x 8192 8-bit 4096 x 4096 12-bit 8192 x 8192 8-bit 4096 x 4096 8-bit 4080 x 4080 8-bit 2048 x 1024 N/A N/A
Ampere
(non A100)
12-bit 8192 x 8192 12-bit 8192 x 8192 8-bit 4096 x 4096 12-bit 8192 x 8192 8-bit 4096 x 4096 8-bit 4080 x 4080 8-bit 2048 x 1024 10-bit 8192 x 8192
Ada 12-bit 8192 x 8192 12-bit 8192 x 8192 8-bit 4096 x 4096 12-bit 8192 x 8192 8-bit 4096 x 4096 8-bit 4080 x 4080 8-bit 2048 x 1024 10-bit 8192 x 8192

* Except GM108 (not supported)

** Max resolution support is limited to selected Pascal chips

*** VP8 decode support is limited to selected Pascal chips

**** VP9 10/12 bit decode support is limited to select Pascal chips


Video Codec APIs

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

This is a comprehensive set of APIs, high-performance tools, samples, and documentation for hardware-accelerated video encoding and decoding on Windows and Linux.

NVIDIA also supports GPU-accelerated encoding and decoding through Microsoft’s DirectX Video, a cross-vendor API for Windows developers and Vulkan Video with support for both Linux and Windows. In contrast to the NVIDIA Video Codec SDK, both DirectX Video and Vulkan Video are low-level APIs. While the Video Codec SDK provides automation for C++ developers, DirectX Video and Vulkan Video provide precise control over video streaming through hardware acceleration blocks, empowering applications to orchestrate system resources efficiently.

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.

Video Codec SDK, DirectX Video, Vulkan Video and PyNvVideoCodec provide complementary support to GPU-accelerated video workflows. NVIDIA will continue to support all listed APIs providing developers with the option to 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 Control

  • Native Vulkan Integration

  • Easy for Vulkan developers

  • Multi-Vendor

  • Low Level Control

  • Native DirectX and Windows Integration

  • Easy for DirectX developers

  • Multi-Vendor

  • High Level Control

  • Native Integration in custom pipelines

  • Useful for users with less knowledge of Vulkan and DirectX

  • Easy for C, C++ developers

  • NVIDIA Proprietary API

  • Comprehensive feature set

  • Python bindings over C++ Video Codec SDK wrapper classes

  • Easy for Python developers

  • NVIDIA 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)

Partners and Examples

img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text
img-alt-text

Latest Video Codec SDK News

img-alt-text

New Video Creation and Streaming

Features Accelerated by the NVIDIA Video Codec SDK
Video Codec SDK 12.1 is available now, bringing improvements to split encoding and a new low-level NVENC API. Learn about the new features and how they've been used to accelerate video creation and streaming.

img-alt-text

Improving Video Quality and

Performance With AV1 and NVIDIA Ada Lovelace Architecture
AV1 is the new gold standard video format, with superior efficiency and quality compared to older H.264 and H.265 formats. It's the most recent royalty-free, efficient video encoder standardized by the Alliance for Open Media.

img-alt-text

AV1 Encoding and Optical Flow:

Video Performance Boosts and Higher Fidelity on the NVIDIA Ada Architecture
Updates to Video Codec SDK, including AV1 encoding on the new Ada GPU generation and updates to Optical Flow SDK, including the new frame rate up conversion library, are announced at GTC.


Resources


Get started developing with Video Codec SDK.

Get Started