Jellyfin and Plex: hardware transcoding on a rented server
A media server spends its time transcoding: converting a 4K HEVC movie to 1080p H.264 for a phone, a TV or a slow connection. On the CPU, a single 4K stream can tie up the whole machine. With Intel QuickSync (the integrated GPU’s video engine), the same work runs in the background.
What the Intel UHD 770 GPU handles
| Codec | Decode | Encode |
|---|---|---|
| H.264 | ✅ | ✅ |
| HEVC / H.265 8 and 10-bit (HDR) | ✅ | ✅ |
| VP9 | ✅ | ✅ |
| AV1 | ✅ | ❌ (decode only) |
An AV1 file is therefore decoded by the GPU and re-encoded to H.264 or HEVC, which covers every player.
The gain, measured
Test file: 4K HEVC 10-bit HDR, converted to 1080p H.264 at 6 Mbit/s, on a Linux GPU server (4 vCPU), on 2026-10-29:
| Method | Speed |
|---|---|
| CPU (x264, veryfast preset) | 2.4× real time, CPU at 100% |
| GPU (VAAPI, low-power encoder) | 12× real time, CPU almost idle |
The command used, so you can test it yourself:
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi \
-vaapi_device /dev/dri/renderD128 -i movie-4k.mkv \
-vf 'scale_vaapi=w=1920:h=1080:format=nv12' \
-c:v h264_vaapi -low_power 1 -b:v 6M -c:a copy output.mkv
Jellyfin
Jellyfin does hardware transcoding for free.
docker run -d --name jellyfin \
--device /dev/dri/renderD128 \
--group-add "$(stat -c %g /dev/dri/renderD128)" \
-v /srv/jellyfin/config:/config -v /srv/media:/media \
-p 8096:8096 jellyfin/jellyfin
Then go to Dashboard → Playback → Transcoding:
- Hardware acceleration: Intel QuickSync (QSV) (or Video Acceleration API (VAAPI));
- under Enable hardware decoding for, check H.264, HEVC, HEVC 10bit, VP9 and AV1;
- check Enable Intel Low-Power H.264 hardware encoder and Enable Intel Low-Power HEVC hardware encoder: it’s the fastest mode, and our VMs support it;
- check Enable Tone mapping to play HDR movies on SDR screens (OpenCL is already installed on our servers).
Plex
Plex hardware transcoding requires a Plex Pass subscription.
docker run -d --name plex --network host \
--device /dev/dri \
-v /srv/plex/config:/config -v /srv/media:/data \
plexinc/pms-docker
In Settings → Transcoder, check Use hardware acceleration when available and Use hardware-accelerated video encoding. During playback, the dashboard shows “(hw)” next to the transcoded stream.
Check that the GPU is doing the work
On our servers, nvtop shows GPU load and the processes using it in real
time. gpu-check verifies in one command that VAAPI, Vulkan and OpenCL work.
FAQ
How many simultaneous streams? It depends on the resolution and the plan (Perf 1, 2 or 3). A 4K HDR to 1080p stream runs at 12× real time when the GPU is idle; since the GPU is shared between several servers, the actual headroom also depends on their load. For household use (a few simultaneous streams), that’s plenty.
Do I need an IPv4 address? The server comes with a dedicated IPv6 address. For access from networks without IPv6, the dedicated IPv4 option is €5 excl. VAT/month.
Try it
A Linux GPU server with an Intel UHD 770 inside the VM, with VAAPI, QuickSync and OpenCL drivers already installed. From €14.99 excl. VAT/month, root access.