Jellyfin-setup met hardware-transcoding
Intel Quick Sync, AMD VCN, of een oude GTX 1650: wat werkt en wat is overhyped.
Jellyfin is gratis, open-source en steeds makkelijker te draaien op een mini-pc, NAS of thuisserver. Toch struikelen veel mensen op hetzelfde punt: video die hapert, een CPU die op 100 % zit terwijl je één 4K-stream afspeelt, en een dashboard vol rode transcoding-waarschuwingen. De oplossing heet hardware-transcoding — het offloaden van het zware videowerk naar de GPU of een vaste videodecoder op je processor. Dit artikel legt uit hoe het werkt, welke chip je het beste kiest en hoe je het goed configureert in Docker.
Transcoding uitgelegd: waarom software allang niet meer volstaat
Wanneer een client een video opvraagt die hij niet rechtstreeks kan afspelen — een andere codec, bitrate of container — zet Jellyfin die video live om via FFmpeg. Dat proces heet transcoding. Bij software-transcoding neemt de CPU het volledige werk over: elke frame decoderen, herschalen, opnieuw encoderen. Een moderne H.264-stream van 1080p kost een typische vierkernige CPU al ± 30 % belasting per stream. Eén 4K HEVC-stream met HDR-tonemapping kan die CPU volledig bezetten.
Hardware-transcoding schuift datzelfde werk door naar een gespecialiseerde videoengine die al op je chip of videokaart zit: Intel’s Quick Sync Video (QSV), AMD’s Video Core Next (VCN) of Nvidia’s NVENC/NVDEC. Die engines zijn niet gewoon “sneller” — ze zijn specifiek ontworpen voor het decoderen en encoderen van videoformaten en doen dat werk met een fractie van het stroomverbruik. De CPU wordt nauwelijks aangesproken en kan tegelijkertijd andere taken blijven uitvoeren.
Jellyfin 10.10 (uitgebracht oktober 2024) tilde hardware-transcoding naar een nieuw niveau: FFmpeg 7.0 als basis, verbeterde Dolby Vision Profile 10-ondersteuning, software-tonemapping van HDR10/HLG en betere QSV-deviceselectie bij systemen met meerdere GPU’s. Voor wie al op 10.9 zat: AV1-hardwarecodering is al beschikbaar sinds die versie, mits je hardware dat ondersteunt.
Transcoding-methoden per platform
| Platform | Methode | Codecs (decode / encode) |
|---|---|---|
| Intel (iGPU/Arc) | QSV (Quick Sync Video) + VAAPI | H.264, HEVC, VP9, AV1 (Arc en N-serie) |
| AMD (RDNA2+) | VAAPI / AMF | H.264, HEVC, VP9, AV1 encode (VCN 4 / RDNA3) |
| Nvidia (Maxwell+) | NVENC / NVDEC | H.264, HEVC, AV1 encode (RTX 30xx+) |
Intel Quick Sync is de koopman
Als je enkel een Jellyfin-server wilt draaien zonder een aparte GPU te kopen, is een Intel-processor met geïntegreerde grafische kaart de meest efficiënte keuze. De N100 en N305 zijn mini-pc-processoren die in 2023–2024 de thuisserver-markt veranderden. Beide draaien op 6 W TDP — minder dan een led-lamp — en bevatten een Quick Sync-engine die tot 3–5 simultane 4K→1080p-transcodes aankan zonder moeite. Stroomkost over een jaar bedraagt minder dan €10 bij Belgische stroomprijzen.
Het verschil tussen de twee: de N100 heeft 24 Execution Units, de N305 heeft 32. Beide ondersteunen dezelfde codecs (inclusief AV1-decode), maar bij vier of meer gelijktijdige streams geeft de N305 meer ademruimte. Voor een huishouden van één tot drie personen is de N100 ruimschoots voldoende.
“Een N100 aan 6 W transcodeert vier 4K-streams tegelijk. Dat is het beste watt-per-stream-verhoudingsgetal op de markt.”
Wie nog meer wil — of een dedicated GPU zoekt — kan terecht bij de Intel Arc-kaarten. Een Arc A380 of B570 kost respectievelijk ± €120 en €250 en ondersteunt AV1-hardwarecodering, wat relevant wordt als je bandbreedte wilt beperken voor externe streamers. De Arc B570 is momenteel het populairste advies in de Jellyfin-community voor wie een aparte transcoding-kaart wil zonder te veel te betalen.
Configuratie in Jellyfin: ga naar Dashboard → Playback → Transcoding, kies Intel QuickSync (QSV) als hardware-acceleratie, en vink HEVC, H.264 en VP9 aan. Op Linux zal Jellyfin ook VAAPI gebruiken als backend voor QSV; beide methoden werken, maar QSV geeft toegang tot meer Intel-specifieke optimalisaties zoals low-power-encoding.
AMD en Nvidia in de praktijk: goed genoeg, maar nuances tellen
AMD’s VCN 4 (Video Core Next, vierde generatie) zit op alle RDNA3-GPU’s: de RX 7000-serie, Ryzen 7000/8000 APU’s en de Ryzen 8000G desktopchips. Ten opzichte van VCN 3 (RDNA2) voegt VCN 4 AV1-hardwarecodering toe — iets wat AMD lang miste. In de praktijk zijn de encodeerkwaliteit en -snelheid beter dan met de oudere VCN-generaties, maar Intel QSV en Nvidia NVENC blijven in benchmarks iets voor. Bovendien waren er bij de lancering gemelde problemen met RDNA3 iGPU’s (zoals de Radeon 780M in de 7840U) waarbij hardware-transcoding onder bepaalde kernelversies niet correct werkte door ontbrekende LLVM-ondersteuning — controleer dus altijd je driverversie voor je troubleshoot.
Voor AMD geldt dat de configuratie via VAAPI verloopt. Op Windows kun je AMF gebruiken, maar Linux (en dus de meeste Docker-setups) gaat via /dev/dri/renderD128. Zorg dat de gebruiker waarmee de Jellyfin-container draait lid is van de render-groep, anders weigert VAAPI toegang tot het apparaat.
Nvidia is het meest rechtlijnig voor wie al een geschikte kaart heeft. GTX 1650 en GTX 1660 zijn Turing-gebaseerde kaarten die NVENC en NVDEC ondersteunen en dus hardware-transcoding aankunnen in Jellyfin. Er is echter één pijnpunt dat veel gebruikers verrast: Nvidia beperkt consumer-GPU’s tot twee gelijktijdige NVENC-sessies. Een GTX 1650 kan dus maximaal twee streams tegelijk hardwarematig transcoderen; een derde stream valt terug op software of wordt geblokkeerd. Dat limiet bestaat al jaren en zit ingebakken in de driver, niet in Jellyfin. Er bestaan patches (zoals nvidia-patch van keylase op GitHub) die deze beperking opheffen, maar die vereisen elke keer een update bij een nieuwe driverversie. Professionele kaarten (RTX Ax000-lijn, Quadro) hebben het limiet niet.
AV1-encoding is bij Nvidia pas beschikbaar vanaf de RTX 30-serie (Ampere). Een GTX 1650 of GTX 1660 kan dus geen AV1 encoderen — alleen H.264 en HEVC. Voor de meeste thuisgebruikers is dat geen probleem, maar het is iets om in het achterhoofd te houden als je server ook externe gebruikers met beperkte bandbreedte bedient.
Quick Sync vs. VCN vs. NVENC: vergelijking
| Factor | Intel QSV (N100/N305/Arc) | AMD VCN 4 (RDNA3) | Nvidia NVENC (GTX 1650/1660) |
|---|---|---|---|
| AV1 encode | Ja (Arc, N-serie) | Ja (RX 7000, Ryzen 7000+) | Nee (pas RTX 30xx+) |
| Streams tegelijk | Onbeperkt | Onbeperkt | Max. 2 (consumer limiet) |
| Verbruik (idle server) | 6–10 W (N-serie) | 15–65 W (afhankelijk GPU) | 10–25 W (GTX 1650) |
| HDR tonemapping | Goed (OpenCL/QSV) | Matig (driverafhankelijk) | Goed (CUDA) |
| Prijs instap | €150 (N100 mini-pc) | €200+ (GPU) | €0 (al in bezit) |
Configuratie in Docker: de stap die het meest misgaat
De meeste problemen met hardware-transcoding in Jellyfin zitten niet in Jellyfin zelf, maar in de Docker-configuratie. Hier volgt een werkende basisopzet voor de drie scenario’s.
Intel QSV / AMD VAAPI (Linux): voeg /dev/dri toe als device en zorg dat de container de juiste groep krijgt:
services:
jellyfin:
image: jellyfin/jellyfin:latest
devices:
- /dev/dri:/dev/dri
group_add:
- "109" # render-groep; controleer met: getent group render
volumes:
- /srv/jellyfin/config:/config
- /media:/media:ro
restart: unless-stopped
Stel in Jellyfin daarna in: Hardware Acceleration → Video Acceleration API (VAAPI) of Intel QSV, en VA-API Device op /dev/dri/renderD128. Controleer of het werkt via Dashboard → Logs: je zoekt naar regels met hwaccel=qsv of hwaccel=vaapi in de FFmpeg-argumenten.
Nvidia NVENC (Linux): je hebt de NVIDIA Container Toolkit nodig op de host. Zonder die toolkit ziet de container de GPU niet. De minimale driverversie voor Jellyfin 10.10 is 520.56.06 op Linux.
services:
jellyfin:
image: jellyfin/jellyfin:latest
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu, video]
volumes:
- /srv/jellyfin/config:/config
- /media:/media:ro
restart: unless-stopped
Na het opstarten kies je in Jellyfin: Hardware Acceleration → NVIDIA NVENC. Een veelgemaakte fout is het controleren van de logs en enkel “no GPU” te zien — dat wijst bijna altijd op een ontbrekende toolkit op de host, niet op een Jellyfin-bug.
Eén tip die in de officieel docs onderbelicht is: gebruik altijd de jellyfin-ffmpeg die meekomt met de officiële Docker-image, herkenbaar aan het -Jellyfin-achtervoegsel in de versiestring. Die build bevat patches en codec-ondersteuning die de standaard FFmpeg niet heeft. Als je een bare-metal installatie doet, installeer dan jellyfin-ffmpeg als pakket en verwijs er expliciet naar in de Jellyfin-instellingen.
Veelgestelde vragen
Moet ik AV1-transcoding inschakelen?
Alleen als je clients hebt die AV1 kunnen afspelen (recente browsers, Android 12+, Apple Silicon macs, Chromecast met Google TV 4K). Voor een gesloten thuisnetwerk met Samsung-tv’s en oudere Fire TV’s levert AV1-encoding meer problemen dan winst op. Zet het aan als optionele codec, niet als standaard.
Werkt hardware-transcoding ook voor DRM-beschermd materiaal?
Nee. DRM-streams (Netflix, Disney+, Amazon Prime) kunnen niet in Jellyfin worden afgespeeld, ongeacht de hardware. Jellyfin is een platform voor je eigen mediabibliotheek. DRM-playback vereist een gecertificeerde Widevine- of PlayReady-implementatie die Jellyfin bewust niet biedt.
Mijn CPU blijft hoog ook met hardware-transcoding ingeschakeld — wat gaat er mis?
Check de FFmpeg-argumenten in de Jellyfin-logs. Als je -vcodec libx264 ziet in plaats van -vcodec h264_nvenc of -vcodec h264_qsv, valt Jellyfin terug op software. Oorzaken: het apparaat is niet toegankelijk vanuit de container, de driverversie voldoet niet, of je hebt de verkeerde hardware-methode gekozen voor je GPU.
Is een GTX 1650 de moeite als ik hem al heb?
Ja, met nuance. Voor één of twee streams tegelijk werkt hij prima en is de instap nul euro. Heb je regelmatig drie of meer gelijktijdige gebruikers, dan stuit je op het twee-streams-limiet. Overweeg dan de nvidia-patch of investeer in een goedkope Intel Arc-kaart als dedicated transcoder.