Quantum

GPU Transcoding on Worker

CatDV Worker allows for GPU transcodes to accelerate your media processing with lightning-fast performance, ensuring smooth and efficient workflows for all your video projects.

On Apple hardware the OS and graphics card are tightly linked so we use the apple video Toolbox framework and libraries to use GPU for processing where possible https://developer.apple.com/documentation/videotoolbox

On Windows and Linux we can make use of Nvidia CUDA processing on supported graphics cards using worker presets to provide GPU transcode

Setup

To use CatDV Worker for GPU transcoding, follow these steps to leverage your system’s GPU for faster and more efficient media processing.

Step 1: Ensure GPU Support

Before starting, make sure your system supports GPU transcoding. Verify that your GPU supports video transcoding (e.g.a supported NVIDIA GPU with CUDA).

This Nvidia page details what decode/encode options are supported by CUDA capable GPU cards

https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new

For reference on the Nvidia CUDA architecture, please visit this URL: https://developer.nvidia.com/cuda-gpus

It is always best to use the latest Graphics driver for your NVidia CUDA card

Nvidia's official driver downloads page: https://www.nvidia.com/en-in/drivers/ *Note for Linux Drivers - Many Linux distributions provide their own packages of the NVIDIA Linux Graphics Driver in the distribution's native package management format. This may interact better with the rest of your distribution's framework, and you may want to use this rather than NVIDIA's official package.

NB. For GPU encoding on Windows or Linux, an NVIDIA graphics card with CUDA cores is required, along with NVIDIA display driver version 551.76 or newer, to support the packaged version of FFmpeg 7.0.2 (compiled with NVIDIA VideoCodecSDK 12.2). We use this SDK to send the instructions to transcode your files to the GPU if the SDK version is too old then we can't talk with the GPU effectively and GPU transcodes will fail

Using GPU’s with virtual machines

In virtualization environments it is possible to exposé a dedicated GPU to a VM - in all cases the underlying GPU will need to meet the above requirements for driver version and be running qualified Nvidia drivers. GPU virtualization is a specialist area and so beyond the scope of normal CatDV support – if you encounter issues setting up your underlying virtualization environment then our Professional Serivces team can help

Using GPU’s with Docker

CatDV worker is shipped as a docker container https://hub.docker.com/r/catdv/worker and normal CPU based encoding is standard with docker containers

GPU virtualization in Docker containers is a specialist area and so beyond the scope of normal CatDV support – if you encounter issues setting up your GPU virtualization in your Docker environment then our Professional Serivces team can help

Step 2: Create a Transcode Preset for GPU

Go to you CatDV Worker Node and “Edit Config”

Click on the “Edit Presets” and create a new preset

Give the preset a name (in our example, it will be “GPU Proxy”) and set “Based on template” = MP4

Once the preset window appears, set your “Video” format = NVIDIA NVENC H.264 encoderA screenshot of a computer

Description automatically generated

Go ahead and “OK” A screenshot of a computer

Description automatically generated

Step 3: Use Preset in Worker Action

1. Edit your CatDV Worker Action for making proxiesA screenshot of a computer program

Description automatically generated

At your “Build Path-based Proxy” step, set the “Format” as the previously created “GPU Proxy” presetA screenshot of a computer

Description automatically generated

Recommended Settings

Here are the settings we've evolved for GPU transcode using Nvidia Cuda. They seem to be a good balance between speed size and quality

-preset p4 -profile:v 2 -level 5.1 -rc-lookahead 20 -rc vbr -b:v 2000k -minrate:v 1000k -maxrate:v 3000k -pix_fmt yuv420p

And you’re done! When the worker transcodes the proxy, it will be faster than normal CPU transcoding.