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 encoder
Go ahead and “OK”
Step 3: Use Preset in Worker Action
1. Edit your CatDV Worker Action for making proxies
At your “Build Path-based Proxy” step, set the “Format” as the previously created “GPU Proxy” preset
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.