Jellyfin Intel Quick Sync Hardware Transcoding in Docker
Doc-based, not yet hands-on tested. This guide is written from the official documentation and has not yet been tested hands-on by us. Check the current official docs before running anything.
Version/date: Jellyfin Server v12.3 (latest GitHub release, published 2026-10-23 09:30 JST — https://github.com/jellyfin/jellyfin/releases/tag/v12.3). Docker Hub has a matching
jellyfin/jellyfin:12.3tag. Last checked: 2026-10-24.Transparency note (HomelabWise): This guide is based on official documentation only and was not hands-on tested by us. Check the linked docs before you run anything.
Source for everything below: Jellyfin's HWA Tutorial On Intel GPU (Markdown source: jellyfin.org repo).
Before you buy or configure
- On Linux, QSV is preferred on mainstream GPUs. VA-API is needed for pre-Broadwell GPUs. Linux QSV supports Broadwell (5th-gen Core) and newer.
- Caution: Ice Lake, Jasper Lake, Elkhart Lake and older chips "are losing support for QSV on Linux" because Intel has deprecated the MediaSDK runtime.
- Avoid Intel CPU models ending in "F", because they have no integrated GPU. You can check Quick Sync support on Intel ARK.
- There's no limit on concurrent encoding sessions on Intel iGPUs or ARC dGPUs, and you don't need a monitor connected (headless works).
This page contains affiliate placeholders. See our affiliate disclosure.
[AFFILIATE: Amazon Associates — Intel mini PC with Quick Sync]
Setup with the official Docker image
The official image already includes the Intel user-mode media drivers and the OpenCL runtime. You only need to pass in the GPU device and the host's render group.
1. Find the render group ID on the host (on some releases the group is video or input instead):
getent group render | cut -d: -f32. docker-compose.yml (official example; replace 122 with your group ID). We pinned the image tag to 12.3; the docs example uses jellyfin/jellyfin:
services:
jellyfin:
image: jellyfin/jellyfin:12.3
user: 1000:1000
group_add:
- '122' # your "render" group ID
network_mode: 'host' # Jellyfin listens directly on the host's interfaces
volumes:
- <CONFIG_DIR>:/config
- <CACHE_DIR>:/cache
- <MEDIA_DIR>:/media
devices:
- /dev/dri/renderD128:/dev/dri/renderD128For a second GPU, use renderD129 instead of renderD128. Start it with docker compose up -d.
⚠️ Caution (hardware not tested): we haven't run this on any Intel hardware. Codec support depends on your CPU generation, so check it with the commands below before relying on hardware transcoding. With
network_mode: 'host', Jellyfin's ports are open on every host interface, so don't port-forward them to the internet without HTTPS in front.
3. Check the codecs and OpenCL:
docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo
docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va -init_hw_device opencl@vaThese commands use the container name jellyfin. The compose example above doesn't set a container name, so either add container_name: jellyfin or use the name Compose generates.
4. Turn it on in Jellyfin: enable QSV (or VA-API) in Jellyfin's transcoding settings, then uncheck any codecs your GPU doesn't support.
Check that it's working (host side, needs root)
sudo apt update && sudo apt install -y intel-gpu-tools # Debian/Ubuntu
sudo intel_gpu_topPlay something in the web client at a lower resolution or bitrate to force a transcode. In intel_gpu_top, the Video engine shows QSV decode/encode load, and Render/3D and VideoEnhance show VPP work.
Tone mapping (HDR to SDR)
This is supported on all Intel GPUs with HEVC 10-bit decoding. You can use OpenCL (supports Dolby Vision P5 and has more tuning options) or QSV VPP (lower power, Linux only, fewer GPU models). Dolby Vision needs "Prefer OS native DXVA or VA-API hardware decoders" checked.
Note on LinuxServer.io images
The LSIO image is maintained separately. Follow its docs. Its config paths differ from the official image's.
Sources
- https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/intel/
- https://github.com/jellyfin/jellyfin/releases/tag/v12.3
- https://hub.docker.com/r/jellyfin/jellyfin
- https://docs.docker.com/compose/