Hardware transcoding setup
Intel QSV, NVIDIA NVENC, VAAPI. Stop burning your CPU and let your GPU do the heavy lifting.
What is hardware transcoding?
When transcoding is unavoidable, hardware acceleration offloads the work from your CPU to dedicated video encoding/decoding hardware - either an Intel iGPU, an NVIDIA GPU, or an AMD GPU. The difference is dramatic: a CPU might struggle with one 4K transcode while a GPU handles several simultaneously with minimal effort.
Important
Hardware transcoding requires Plex Pass (Plex) or Emby Premiere (Emby). Jellyfin includes it for free.
Intel Quick Sync (QSV)
The most cost-effective option. Quick Sync is built into Intel CPUs with integrated graphics - no separate GPU needed. Available from Haswell (4th gen) onwards, but 7th gen+ is needed for HEVC/4K. Intel 12th/13th gen (Alder Lake/Raptor Lake) iGPUs are excellent transcoders.
On Linux / Docker
Verify QSV is available: check for /dev/dri/renderD128. Add the emby/jellyfin user to the render and video groups: sudo usermod -a -G render,video jellyfin. In Docker, pass through the device: --device /dev/dri:/dev/dri.
On Windows
Usually works out of the box. Ensure Intel GPU drivers are installed. In your media server dashboard, go to Transcoding settings and select Intel Quick Sync Video.
Tip
Intel Arc dedicated GPUs also work well for transcoding and are worth considering if your CPU doesn't have an iGPU.
NVIDIA NVENC
High quality encoding from NVIDIA GPUs. Pascal (GTX 10xx) and newer are recommended. One catch: consumer GeForce cards limit concurrent encoding sessions (usually 3). Quadro cards have no limit.
Docker setup
Install nvidia-container-toolkit. Add to your container: --gpus all, plus environment variables NVIDIA_VISIBLE_DEVICES=all and NVIDIA_DRIVER_CAPABILITIES=all. Without these, ffmpeg will fail with "Cannot load libcuda.so.1".
VRAM is the limiting factor for NVIDIA: roughly 1.3 GB per 4K transcode, under 500 MB for 1080p. A GTX 1050 Ti with 4 GB VRAM can handle a couple of 4K transcodes simultaneously.
Important
GTX 1030 has no hardware encoder. GTX 1650 (TU117) has limited encoding compared to full-fat cards. All other cards within the same generation have identical encode/decode capabilities.
VAAPI (Linux)
VAAPI is a Linux kernel-level API for hardware video acceleration. Used by Intel iGPUs and AMD GPUs on Linux. If you're running Linux natively or in Docker, VAAPI is often the easiest path for Intel hardware.
- 1Check for /dev/dri devices: ls /dev/dri (should show card0 and renderD128).
- 2Add your media server user to render and video groups.
- 3In Docker, pass --device /dev/dri:/dev/dri.
- 4In your server dashboard, select VAAPI as the hardware acceleration method.
- 5For Proxmox LXC: pass through /dev/dri devices to the container.
NAS hardware transcoding
Most ARM-based NAS devices cannot hardware transcode. Intel-based NAS can, but with limitations:
Synology DS920+ / DS224+
Intel Celeron J4125. Can hardware decode HEVC HDR and encode H.264 1080p. Cannot do HDR tone mapping natively. Running your media server in Docker on Synology can unlock additional capabilities.
QNAP with Intel
Running your media server via Docker on QNAP (Container Station) enables HDR tone mapping that the native package doesn't support. Docker brings the necessary libraries.
Tip
If your NAS can't hardware transcode, the best strategy is to avoid transcoding entirely: use devices that direct play everything, and set quality to Original.
How to verify it's working
- 1Start playback and manually set quality to something low (e.g., 480p) to force a transcode.
- 2Check your server dashboard under Active Sessions - it should show the hardware method (QSV, NVENC, VAAPI).
- 3If it shows CPU instead, check your server logs and FFmpeg logs for errors.
- 4On Linux, verify GPU access: run vainfo (for VAAPI) or nvidia-smi (for NVIDIA).
Did this guide help?
Be the first to vote.
Related guides