Intel iGPU im Proxmox-Container: Schritt für Schritt zur GPU-Transcodierung
Wer Medienserver wie Jellyfin oder Plex in einem Proxmox-Container betreibt, kennt das Problem: Videotranscodierung per Software frisst CPU-Ressourcen ohne Ende. Dabei schlummert in vielen Intel-Prozessoren eine leistungsfähige integrierte GPU, die genau diese Arbeit übernehmen kann – und zwar um ein Vielfaches schneller. In diesem Beitrag zeige ich dir, wie du die Intel iGPU innerhalb eines LXC-Containers unter Proxmox für Hardware-Transcodierung nutzbar machst.
Warum Hardware-Transcodierung den Unterschied macht
Software-basiertes Encoding belastet die CPU massiv. Gerade auf Homeservern mit begrenzter Rechenleistung wird das schnell zum Flaschenhals – insbesondere wenn mehrere Streams gleichzeitig laufen. Intel Quick Sync Video (QSV) verlagert die gesamte Encoding- und Decoding-Arbeit auf spezialisierte Schaltkreise innerhalb der integrierten GPU. Das Ergebnis: Die CPU bleibt frei für andere Aufgaben, und die Transcodierung läuft deutlich flotter.
In der Praxis lassen sich mit QSV Geschwindigkeitszuwächse von Faktor 3 bis 4 gegenüber reinem Software-Encoding erzielen. Bei einem kurzen 720p-Testclip bedeutet das beispielsweise eine Reduktion der Encoding-Zeit von rund 1.500 ms auf unter 500 ms. Noch beeindruckender: H.264-Transcodierung kann dabei etwa das 17-fache der Echtzeit-Geschwindigkeit erreichen.
Was du für dieses Setup brauchst
Bevor du loslegst, stelle sicher, dass folgende Voraussetzungen erfüllt sind:
Proxmox VE 9.0 oder neuer als Host-System
Ein Debian 13 (Trixie)-basierter LXC-Container – diese Distribution liefert besonders aktuelle Treiberversionen mit
Eine integrierte Intel-GPU (z. B. aus der Alder Lake-N-Generation)
Kernel 6.14 oder neuer auf dem Proxmox-Host
Die GPU muss bereits per Device Passthrough an den Container durchgereicht sein (üblicherweise unter der PCI-Adresse
0000:00:02.0)
Phase 1: Basissystem vorbereiten
Melde dich als root im Container an und bringe zunächst das System auf den aktuellen Stand. Anschließend installierst du grundlegende Werkzeuge zur Hardware-Erkennung:
apt update
apt install -y pciutils udevEin schneller Check zeigt dir, ob der Container die GPU überhaupt sieht:
lspci | grep VGAHier sollte deine Intel-Grafik aufgelistet werden. Falls nicht, stimmt etwas mit dem Passthrough nicht – dann lohnt sich ein Blick in die Container-Konfiguration auf dem Proxmox-Host.
Phase 2: Treiberstack und VA-API einrichten
Jetzt kommt der Kern der Installation. Du brauchst den Intel Media Driver, die VA-API-Bibliotheken sowie einige Hilfspakete:
# Intel Media Driver (proprietär und Open Source)
apt install -y intel-media-va-driver-non-free i965-va-driver
# VA-API Framework
apt install -y libva2 libva-dev vainfo va-driver-all
# Intel-spezifische Laufzeitbibliotheken
apt install -y libigdgmm12 libvpl2 libmfx-gen1.2
# GPU-Monitoring
apt install -y intel-gpu-toolsDebian Trixie hat den großen Vorteil, dass hier bereits brandaktuelle Treiberversionen paketiert sind. Bei älteren Distributionen wie Debian Bookworm kann es sein, dass die VA-API-Unterstützung unvollständig ist oder manuelles Nachinstallieren nötig wird.
Phase 3: FFmpeg mit QSV-Support installieren
FFmpeg bildet das Herzstück der Transcodierung. Unter Debian Trixie ist die Sache denkbar einfach:
apt install -y ffmpegDie mitgelieferte FFmpeg-Version bringt QSV-Unterstützung bereits von Haus aus mit – kein Selbstkompilieren nötig.
Phase 4: Den richtigen Treiber aktivieren
Damit VA-API den modernen iHD-Treiber anstelle des älteren i965-Treibers verwendet, musst du zwei Umgebungsvariablen systemweit setzen. Trage folgendes in /etc/environment ein:
LIBVA_DRIVER_NAME=iHD
LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/driNach einem Neustart des Containers oder einem source /etc/environment greifen die Einstellungen.
Phase 5: Funktionstest durchführen
VA-API verifizieren
Der Befehl vainfo zeigt dir, welche Codecs und Profile die GPU unterstützt:
vainfo --display drm --device /dev/dri/renderD128In der Ausgabe solltest du unter anderem Profile für H.264, HEVC und VP9 finden – das sind die wichtigsten Formate für Streaming-Anwendungen.
FFmpeg-Encoder prüfen
Stelle sicher, dass FFmpeg die QSV-Encoder kennt:
ffmpeg -hide_banner -hwaccels | grep qsv
ffmpeg -hide_banner -encoders | grep qsvTauchen hier Einträge wie h264_qsv, hevc_qsv und vp9_qsv auf, ist alles korrekt konfiguriert.
Welche Codecs stehen zur Verfügung?
Mit einer modernen Intel-iGPU hast du Zugriff auf ein breites Codec-Spektrum:
| Codec | FFmpeg-Encoder | Decoding | Encoding |
|---|---|---|---|
| H.264/AVC | h264_qsv | ✅ | ✅ |
| HEVC/H.265 | hevc_qsv | ✅ | ✅ |
| VP9 | vp9_qsv | ✅ | ✅ |
| MPEG-2 | mpeg2_qsv | ✅ | ✅ |
| MJPEG | mjpeg_qsv | — | ✅ |
| AV1 | av1_qsv | je nach GPU-Generation | je nach GPU-Generation |
Besonders AV1 ist interessant für zukunftsorientierte Setups, wird aber erst ab neueren Intel-Generationen hardwareseitig unterstützt.
Praxisbeispiele: FFmpeg-Befehle für den Alltag
Einfache H.264-Transcodierung
export LIBVA_DRIVER_NAME=iHD
ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD128 \
-i eingabe.mp4 \
-c:v h264_qsv -preset faster -b:v 2M \
-c:a copy ausgabe_h264.mp4Umwandlung nach HEVC für kleinere Dateien
ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD128 \
-i eingabe.mp4 \
-c:v hevc_qsv -preset faster -b:v 1M \
-c:a copy ausgabe_hevc.mp4Komplette Hardware-Pipeline (Dekodierung und Enkodierung auf der GPU)
ffmpeg -hwaccel qsv -c:v h264_qsv \
-i eingabe.mp4 \
-c:v hevc_qsv -preset faster -b:v 1M \
-c:a copy ausgabe.mp4Bei dieser Variante verbleibt das Videomaterial vollständig im GPU-Speicher – die CPU wird praktisch gar nicht beansprucht.
GPU-Auslastung im Blick behalten
Mit intel_gpu_top lässt sich live beobachten, wie stark die verschiedenen GPU-Engines ausgelastet sind:
intel_gpu_topAchtung: Dieses Tool benötigt erweiterte Berechtigungen. In einem unprivilegierten Container schlägt es mit der Meldung „Failed to detect engines" fehl. In diesem Fall musst du in der Container-Konfiguration unter /etc/pve/lxc/[CTID].conf folgende Zeile ergänzen:
lxc.apparmor.profile: unconfinedZusätzlich solltest du unter Options → Features die Option Nesting aktivieren.
Für grundlegende GPU-Infos ohne privilegierten Zugriff kannst du alternativ die sysfs-Schnittstelle nutzen:
cat /sys/class/drm/card*/gt_cur_freq_mhzTypische Stolperfallen und ihre Lösungen
VA-API meldet Fehler: Prüfe zunächst die Berechtigungen der Gerätedateien unter /dev/dri/. Das Render-Device renderD128 muss für den Container-Benutzer lesbar und beschreibbar sein.
FFmpeg kennt keinen QSV-Encoder: Meistens liegt es an der fehlenden Umgebungsvariable LIBVA_DRIVER_NAME=iHD. Setze sie explizit per export, bevor du FFmpeg aufrufst.
Die Performance bleibt hinter den Erwartungen zurück: Kontrolliere per intel_gpu_top, ob die Video-Engine während der Transcodierung tatsächlich aktiv ist. Bleibt sie bei 0%, greift FFmpeg womöglich auf Software-Fallback zurück.
Wofür eignet sich dieses Setup besonders?
Die Kombination aus Proxmox-Container und Intel-GPU-Passthrough ist ideal für zahlreiche Einsatzszenarien:
Medienserver wie Jellyfin, Plex oder Emby, bei denen mehrere Nutzer gleichzeitig unterschiedliche Streams abrufen
Live-Streaming-Plattformen, die Echtzeitkodierung benötigen
Batch-Konvertierung großer Videobibliotheken, etwa beim Umstieg von H.264 auf HEVC
Überwachungslösungen mit Bewegungserkennung und Daueraufzeichnung
Videokonferenz-Server wie Jitsi oder BigBlueButton
Fazit
Die GPU-beschleunigte Transcodierung innerhalb eines LXC-Containers ist kein Hexenwerk – vorausgesetzt, man nutzt eine aktuelle Distribution wie Debian Trixie und hat das Device Passthrough korrekt eingerichtet. Der Leistungsunterschied zur reinen Software-Lösung ist erheblich und rechtfertigt den Einrichtungsaufwand allemal. Wer einen Homeserver mit Intel-Prozessor betreibt und regelmäßig mit Video-Streams arbeitet, sollte diese Möglichkeit unbedingt nutzen.