Hardware Transcoding
Tdarr containers support NVENC and VAAPI hardware/GPU accelerated transcoding.
If using NVENC on a Linux host, make sure to install and configure the NVIDIA container toolkit on the host.
The examples below use Docker's --gpus=all option. Only add --runtime=nvidia if docker info lists an nvidia runtime; otherwise Docker will fail with unknown or invalid runtime name: nvidia.
You can quickly verify that you have your host system set up correctly by running the following Docker run commands. Check the transcode processes finish successfully.
FFmpeg NVENC
docker run \
-e "NVIDIA_DRIVER_CAPABILITIES=all" \
-e "NVIDIA_VISIBLE_DEVICES=all" \
--gpus=all \
ghcr.io/haveagitgat/tdarr_node:latest \
/bin/bash -e \
-c 'curl \
-o /tmp/sample.mkv \
-l https://samples.tdarr.io/api/v1/samples/sample__1080__libx264__aac__30s__video.mkv; \
ffmpeg \
-i /tmp/sample.mkv \
-c:v:0 hevc_nvenc \
/tmp/sample-out.mkv'
FFmpeg VAAPI
docker run \
--device=/dev/dri:/dev/dri \
ghcr.io/haveagitgat/tdarr_node:latest \
/bin/bash -e \
-c 'curl \
-o /tmp/sample.mkv \
-l https://samples.tdarr.io/api/v1/samples/sample__1080__libx264__aac__30s__video.mkv; \
ffmpeg \
-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \
-hwaccel_output_format vaapi \
-i /tmp/sample.mkv \
-c:v:0 hevc_vaapi \
/tmp/sample-out.mkv'
FFmpeg QSV
docker run \
--device=/dev/dri:/dev/dri \
ghcr.io/haveagitgat/tdarr_node:latest \
/bin/bash -e \
-c 'ffmpeg \
-hwaccel qsv -f lavfi -i color=c=black:s=256x256:d=1:r=30 \
-c:v:0 hevc_qsv \
-f null /dev/null'
HandBrake NVENC
docker run \
-e "NVIDIA_DRIVER_CAPABILITIES=all" \
-e "NVIDIA_VISIBLE_DEVICES=all" \
--gpus=all \
ghcr.io/haveagitgat/tdarr_node:latest \
/bin/bash -e \
-c 'curl \
-o /tmp/sample.mkv \
-l https://samples.tdarr.io/api/v1/samples/sample__1080__libx264__aac__30s__video.mkv; \
HandBrakeCLI \
-i "/tmp/sample.mkv" \
-o "/tmp/sample-out.mkv" \
-e nvenc_h265'