Hardware Acceleration
Use your GPU for faster, more efficient transcoding.
Supported Hardware
| Type | GPUs | Requires |
|---|---|---|
| VAAPI | Intel, AMD | /dev/dri device access |
| NVENC | NVIDIA | NVIDIA driver + runtime |
| QSV | Intel | Intel Media SDK |
| AMF | AMD | AMD drivers |
Docker Setup
Intel / AMD (VAAPI)
Pass the DRI device to your container:
services:
tvarr:
image: ghcr.io/jmylchreest/tvarr:release
devices:
- /dev/dri:/dev/dri
Verify access:
docker exec tvarr ls -la /dev/dri
# Should show renderD128, card0, etc.
NVIDIA (NVENC)
Use the NVIDIA container runtime:
services:
tvarr:
image: ghcr.io/jmylchreest/tvarr:release
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu, video, compute]
Or with the legacy runtime flag:
services:
tvarr:
image: ghcr.io/jmylchreest/tvarr:release
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=video,compute
Kubernetes Setup
Intel GPU
spec:
containers:
- name: tvarr
resources:
limits:
gpu.intel.com/i915: 1
volumeMounts:
- name: dri
mountPath: /dev/dri
volumes:
- name: dri
hostPath:
path: /dev/dri
NVIDIA GPU
spec:
runtimeClassName: nvidia
containers:
- name: tvarr
resources:
limits:
nvidia.com/gpu: 1
Verifying Hardware
Check detected hardware in the logs:
docker logs tvarr 2>&1 | grep -i "gpu\|vaapi\|nvenc\|qsv"
Or visit the Transcoders page to see detected capabilities.
Encoder Priority
When multiple encoders are available, tvarr prefers:
- GPU hardware encoder (fastest, lowest CPU)
- CPU software encoder (universal fallback)
You can override this per-profile with encoder overrides.
Session Limits
GPUs have encoding session limits:
| GPU | Max Sessions |
|---|---|
| NVIDIA Consumer | 3-5 |
| NVIDIA Quadro/Pro | Unlimited |
| Intel (recent) | ~20 |
| AMD | Varies |
tvarr auto-detects these limits and won't exceed them.
Troubleshooting
VAAPI Not Working
Check render device permissions:
# Inside container
ls -la /dev/dri/renderD128
# Should be readable/writable
# Check user group
id
# Should include 'video' or 'render' group
NVENC "Too Many Sessions"
You've hit the session limit. Options:
- Use fewer concurrent streams
- Use a Quadro/professional GPU
- Apply the NVENC patch
"No Hardware Encoder Found"
Ensure:
- Device is passed to container correctly
- Drivers are installed on host
- Container user has access to device