Hardware-Videodekodierung und -kodierung unter Windows und auf dem Mac: D3D11, CUDA, Vulkan, OpenGL und Metal erklärt
Wie NVDEC, NVENC, Quick Sync, AMF, D3D11VA, Vulkan Video und VideoToolbox arbeiten, was eine Zero-Copy-GPU-Pipeline ist und wann Hardware-Encoding lohnt.
Das Wichtigste in Kürze
Hardware-Videodekodierung und -kodierung übergeben die schwere Codec-Arbeit an Festfunktionseinheiten auf der GPU statt an die CPU. Unter Windows erreichen Apps diese Einheiten über D3D11VA, D3D12, das CUDA-basierte SDK von NVIDIA, AMD AMF, Intel oneVPL oder Vulkan Video; auf dem Mac über VideoToolbox. Das Ergebnis sind geringere CPU-Last, schnellere Exporte und Frames, die im GPU-Speicher bleiben können.
- GPUs haben eigene Video-Engines (NVIDIA NVDEC und NVENC, Intel Quick Sync, AMD VCN, die Media Engine von Apple), die getrennt von den Grafikkernen dekodieren und kodieren.
- Unter Windows erreicht man sie über mehrere APIs: D3D11VA und D3D12 Video, das CUDA-basierte SDK von NVIDIA, AMD AMF, Intel oneVPL und Media SDK sowie Vulkan Video. Macs nutzen VideoToolbox.
- Der eigentliche Gewinn ist oft die geringere CPU-Last: In unserem Test brauchte die Hardwaredekodierung von 4K-H.264 etwa 95 % weniger CPU-Zeit als die Softwaredekodierung.
- Hardware-Encoding ist schnell, braucht aber für dieselbe Qualität mehr Bits. Unser HEVC-Encoding auf der GPU erreichte den VMAF-Wert von x265 3,3-mal schneller, mit 15 % mehr Bits.
- Eine Zero-Copy-Pipeline hält Frames zwischen Dekodierung, Verarbeitung, Anzeige und Kodierung im GPU-Speicher, mit Brücken zwischen D3D11, CUDA, OpenGL, Vulkan und Metal.
Was mit einem Frame passiert
Jede Video-App durchläuft dieselben vier Stufen: Sie dekodiert die komprimierte Datei in Frames, verarbeitet sie (Skalierung, Farbe, KI-Modelle) und zeigt sie dann auf dem Bildschirm an oder kodiert sie in eine neue Datei. Jede Stufe kann auf der CPU oder der GPU laufen, und jede Übergabe zwischen beiden kostet Zeit.
Die Frames sind größer, als die meisten erwarten. Ein 4K-Frame in 10 Bit 4:2:0 (das P010-Format, das GPUs verwenden) belegt 3840 × 2160 × 1,5 Samples × 2 Byte, also etwa 24,9 MB. Bei 60 Bildern pro Sekunde sind das 1,5 GB pro Sekunde, in jede Richtung, wenn die Frames zwischen Arbeitsspeicher und GPU-Speicher hin- und herwandern. Eine Pipeline, die ohne diesen Umweg auf der GPU dekodiert, verarbeitet und kodiert, heißt Zero-Copy, und aus ihr stammt der Großteil der Geschwindigkeit moderner Videosoftware.
Die Video-Engines in Ihrer GPU
Videodekodierung und -kodierung laufen nicht auf denselben Kernen, die Spiele zeichnen oder KI-Modelle ausführen. GPUs haben dafür eigene Festfunktionsblöcke:
| Hersteller | Dekodier-Engine | Kodier-Engine | Zugriff über |
|---|---|---|---|
| NVIDIA | NVDEC | NVENC | NVIDIA Video Codec SDK (mit CUDA), D3D11VA, D3D12, Vulkan Video |
| Intel | Quick Sync Video | Quick Sync Video | Intel oneVPL (Iris Xe und neuer), Media SDK (ältere GPUs), D3D11VA, D3D12, Vulkan Video |
| AMD | VCN | VCN | AMD AMF, D3D11VA, D3D12, Vulkan Video |
| Apple | Media Engine | Media Engine | VideoToolbox |
NVIDIA sagt es deutlich: Seine GPUs enthalten Hardware-Decoder und -Encoder, die von den CUDA-Kernen getrennt sind. Daraus folgt zweierlei. Erstens bremsen Hardwaredekodierung und -kodierung andere GPU-Arbeit kaum, ein KI-Modell kann also laufen, während die Video-Engine die nächsten Frames dekodiert. Zweitens ist im Silizium festgelegt, was eine Engine kann: Die Unterstützung von Codecs, Bittiefen und Chroma-Formaten hängt von der GPU-Generation ab. Die Support-Matrix von NVIDIA etwa führt 4:2:2-Encoding als Neuerung der Blackwell-Generation. Prüfen Sie die Matrix Ihres Herstellers, bevor Sie davon ausgehen, dass ein Codec beschleunigt wird.
Die Dekodier- und Kodier-APIs unter Windows und auf dem Mac
Eine Video-Engine ist meist über mehrere APIs erreichbar. Jede hat ihre eigenen Stärken:
| API | Plattform | Was sie auszeichnet |
|---|---|---|
| D3D11VA | Windows | Herstellerneutral, in Windows eingebaut, der am breitesten unterstützte Weg zum Dekodieren auf jeder GPU; die Frames landen in D3D11-Texturen, bereit zur Anzeige |
| D3D12 Video | Windows | Dieselbe herstellerneutrale Idee auf Direct3D 12, mit expliziter Kontrolle über Speicher und Queues; kodiert auch |
| NVDEC und NVENC (Video Codec SDK) | Windows, Linux | Direkter Zugriff auf die Engines von NVIDIA, alle Encoder-Einstellungen und Frames im CUDA-Speicher für die CUDA-Verarbeitung |
| AMD AMF | Windows, Linux | Zugriff auf die Video-Engines von AMD plus GPU-Compute für Konvertierung und Skalierung |
| Intel oneVPL und Media SDK | Windows, Linux | Zugriff auf Quick Sync: oneVPL für Iris Xe und neuer, Media SDK für ältere Intel-Grafik |
| Vulkan Video | Windows, Linux, weitere | Ein herstellerübergreifender Standard: Dekodierung, Kodierung, Compute und Grafik in einer expliziten API |
| VideoToolbox | macOS | Das Framework von Apple für hardwarebeschleunigtes Kodieren und Dekodieren auf der Media Engine des Mac |
Softwaredekodierung und -kodierung (libavcodec, x264, x265, SVT-AV1) bleiben die Rückfallebene für alles, was die Hardware nicht bewältigt, und die Referenz für Qualität.
Die fünf Pipelines: D3D11, CUDA, OpenGL, Vulkan und Metal
Die Dekodierung liefert Frames; die Pipeline entscheidet, wo sie liegen und wer als Nächstes mit ihnen arbeitet. Jede Grafik- oder Compute-API ist eine andere Art von Pipeline:
- D3D11 ist das Arbeitspferd für Video unter Windows. Decoder schreiben direkt in D3D11-Texturen, der Videoprozessor wandelt und skaliert sie, und die Swapchain zeigt sie an. Die API ist ausgereift, funktioniert auf jeder Windows-GPU und ist das natürliche Zuhause für hardwaredekodierte Frames.
- CUDA ist die Compute-Plattform von NVIDIA. Von NVDEC dekodierte Frames können zur Verarbeitung im CUDA-Speicher bleiben und direkt an NVENC gehen. NVIDIA dokumentiert eine CUDA-Direct3D-11-Interoperabilitäts-API, sodass CUDA-Ergebnisse zu D3D11-Texturen werden können, ohne über den Arbeitsspeicher kopiert zu werden.
- OpenGL ist die portabelste Grafik-API und in Playern und Schnittprogrammen noch verbreitet. Unter Windows teilt sie Texturen mit D3D11 über Interop-Erweiterungen, NVIDIAs
WGL_NV_DX_interop2oder das herstellerneutraleGL_EXT_memory_object_win32, das D3D11-Speicher in OpenGL importiert. - Vulkan ist die moderne explizite API: Grafik, Compute und mit Vulkan Video auch Dekodierung und Kodierung an einem Ort, bei jedem Hersteller. Die Erweiterung
VK_KHR_external_memory_win32lässt Vulkan unter Windows Speicher mit D3D11 teilen. - Metal ist die GPU-API von Apple für Grafik und Compute auf Apple Silicon. Apple beschreibt den Unified Memory des Chips so, dass alle seine Teile auf dieselben Daten zugreifen können, ohne sie zwischen Speicherbereichen zu kopieren; ein über VideoToolbox dekodierter Frame kann also verarbeitet und angezeigt werden, ohne einen Bus zu überqueren.
Schwierig ist nicht die einzelne API, sondern die Grenzen dazwischen. Ein mit CUDA dekodierter, aber mit OpenGL angezeigter Frame braucht eine Brücke, und eine Brücke, die auf den Arbeitsspeicher ausweicht, verschenkt den Vorteil der Dekodierung auf der GPU.
Was unsere Tests gezeigt haben
Wir haben einen gewöhnlichen Laptop getestet: einen Intel Core i7-1360P mit integrierter Intel-Iris-Xe-Grafik, mit FFmpeg 8.1. FFmpeg listete darauf drei Hardwarewege: D3D11VA, D3D12VA und Vulkan.
Dekodieren von 5 Sekunden 4K-H.264 (121 Frames mit 25 Mbps):
| Weg | CPU-Zeit (User und System) | Gesamtlaufzeit |
|---|---|---|
| Software (libavcodec) | 4,45 s | 0,55 s |
| D3D11VA | 0,22 s | 0,40 s |
| D3D12VA | 0,30 s | 0,48 s |
| Vulkan | 0,25 s | 0,52 s |
Die CPU dekodierte H.264 schnell, indem sie die Arbeit auf viele Threads verteilte, brauchte dafür aber etwa 4,5 Sekunden CPU-Zeit. Alle drei Hardwarewege waren etwa genauso schnell fertig und brauchten rund 95 % weniger CPU-Zeit. Damit bleibt der Prozessor frei für alles andere in der Pipeline.
Kodieren von 5 Sekunden detailreichem 1080p-Material mit einem Ziel von 4 Mbps:
| Encoder | Zeit | Tatsächliche Bitrate | VMAF |
|---|---|---|---|
| x264, Preset medium (Software) | 3,7 s | 3,4 Mbps | 71,6 |
| x265, Preset medium (Software) | 7,0 s | 3,5 Mbps | 72,5 |
| H.264 auf der GPU (D3D12) | 2,1 s | 4,3 Mbps | 67,2 |
| HEVC auf der GPU (D3D12) | 2,1 s | 4,1 Mbps | 72,8 |

Der HEVC-Encoder der GPU erreichte den VMAF-Wert von x265 3,3-mal schneller, brauchte dafür aber etwa 15 % mehr Bits; sein H.264-Encoder brauchte 26 % mehr Bits als x264 und lag trotzdem niedriger. Das ist der übliche Tausch: Hardware-Encoder sind auf Geschwindigkeit und Energie abgestimmt, Software-Encoder auf Qualität pro Bit. Mit diesem Treiber starteten die Vulkan-Video-Encoder von FFmpeg nicht, eine Erinnerung daran, dass sich die Unterstützung je nach GPU und Treiber unterscheidet. Was VMAF misst, erklärt wie wir Videoqualität bewerten.
Wie KwaFlux alle Wege nutzt
KwaFlux setzt nicht auf eine einzige API. Seine Media-Engine bringt für jeden Dekodier- und Kodierweg ein Plug-in mit und baut Brücken zwischen den Pipelines. So kann sie auf jedem Rechner einen funktionierenden Hardwareweg wählen und die Frames auf der GPU halten.

- Acht Dekodierwege, der Reihe nach probiert. Unter Windows probiert die Konfiguration der Engine D3D11VA, dann D3D12VA, NVIDIA NVDEC, AMD AMF, Intel oneVPL, Intel Media SDK und Vulkan Video, und dekodiert nur dann in Software, wenn keiner davon die Datei übernehmen kann.
- Sechs Kodierwege. Beim Kodieren probiert sie NVIDIA NVENC, AMD AMF, Intel oneVPL, Media SDK und Vulkan Video, bevor sie auf Software zurückgreift. Ihre Encoder-Tabelle enthält auch die VideoToolbox-Encoder von Apple.
- Vier Render-Backends. Das Bild wird mit D3D11, OpenGL, Vulkan oder Metal gezeichnet. Die Standardeinstellung AUTO lässt die Engine wählen, und ein Backend, das die Plattform nicht unterstützt, fällt auf AUTO zurück.
- Brücken, die den Arbeitsspeicher umgehen. NVDEC-Frames erreichen D3D11 über die D3D11-Interop von CUDA; D3D11 und OpenGL teilen Texturen über
WGL_NV_DX_interop2oderGL_EXT_memory_object_win32; Vulkan teilt Speicher mit D3D11 überVK_KHR_external_memory_win32; D3D12 und D3D11 tauschen Frames über gemeinsame DXGI-Handles aus. Fehlt OpenGL auf einem Rechner eine effiziente Brücke, wechselt der Player zu D3D11, statt jeden Frame zu kopieren. - Eine GPU pro Auftrag. Auf Laptops mit zwei GPUs ordnet die Engine die Adapter über ihre LUID zu, damit Dekodierung, Verarbeitung und Anzeige die Frames nicht zwischen integrierter und dedizierter GPU hin- und herschieben.
- Wiederherstellung statt Absturz. Setzt Windows den Grafiktreiber zurück (TDR), baut der Player sein D3D11-Gerät neu auf. Jede Brücke hat einen CPU-Weg, und ein Export, dessen GPU-Encoder nicht startet, wird in Software kodiert.
- KI auf jeder aktuellen GPU. Unter Windows läuft die KI-Verarbeitung über ONNX Runtime mit DirectML, das auf DirectX-12-GPUs von Intel, AMD und NVIDIA funktioniert. Unter macOS 13 oder neuer führt die GPU-Beschleunigungskomponente unterstützte Funktionen über Core ML von Apple aus. Die Hardwareseite behandeln Welche GPU Sie brauchen und KwaFlux auf dem Mac.
Über zwei Einstellungen können Sie das steuern. Einstellungen › Leistung › Hardwaredekodierung schaltet die Hardwaredekodierung ein oder aus (wirksam nach einem Neustart), und KI-Prozessor wählt Auto, GPU oder CPU für die KI-Arbeit. Im Konverter kodiert Schnellkonvertierung › GPU-Beschleunigung H.264 und HEVC auf der Grafikkarte. Standardmäßig ist das aus: KwaFlux weist darauf hin, dass es schneller ist, aber bei gleicher Bitrate etwas schlechtere Qualität liefert als Software-Encoding, was zu unserem Test passt. Jede Datei zeigt ein Abzeichen GPU-kodiert oder Software-Kodierung, wenn der GPU-Encoder nicht starten konnte.
So prüfen Sie Ihren eigenen Rechner
Listen Sie die Hardwarewege auf, die FFmpeg nutzen kann:
ffmpeg -hide_banner -hwaccelsVergleichen Sie die CPU-Zeit für Software- und Hardwaredekodierung. Die Zeile von -benchmark meldet User-Zeit (utime), System-Zeit (stime) und Gesamtlaufzeit (rtime):
ffmpeg -hide_banner -benchmark -i input.mp4 -an -f null -ffmpeg -hide_banner -benchmark -hwaccel d3d11va -hwaccel_output_format d3d11 -i input.mp4 -an -f null -Kodieren Sie HEVC über D3D12 auf der GPU und vergleichen Sie das Ergebnis mit x265 beim selben Ziel:
ffmpeg -hide_banner -loglevel error -y -init_hw_device d3d12va=gpu -filter_hw_device gpu -i input.mp4 -vf "format=nv12,hwupload" -c:v hevc_d3d12va -rc_mode VBR -b:v 4M -maxrate 6M -c:a copy gpu_hevc.mp4ffmpeg -hide_banner -loglevel error -y -i input.mp4 -c:v libx265 -preset medium -b:v 4M -c:a copy cpu_hevc.mp4Bewerten Sie danach beide gegen die Quelle. Laden Sie vorher vmaf_v0.6.1.json aus dem VMAF-Repository von Netflix in denselben Ordner, denn manche FFmpeg-Builds enthalten kein eingebautes Modell:
ffmpeg -hide_banner -i gpu_hevc.mp4 -i input.mp4 -lavfi "[0:v][1:v]libvmaf=model=path=vmaf_v0.6.1.json" -f null -Liegt das Hardware-Encoding bei ähnlicher Bitrate nah am Software-Ergebnis, nutzen Sie es für Entwürfe und schnelles Teilen; für Archive bleiben Sie beim Software-Encoding. Zur Wahl des Codecs selbst lesen Sie H.264 vs. H.265 vs. AV1.
Typische Probleme
| Problem | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Eine Datei wird trotz eingeschalteter Hardwaredekodierung in Software dekodiert | Codec, Bittiefe oder Chroma-Format, das die Engine nicht unterstützt (oft 4:2:2 oder 4:4:4) | Die Support-Matrix des Herstellers prüfen; die Softwaredekodierung funktioniert weiterhin |
| GPU-kodierte Dateien wirken weicher | Hardware-Encoder setzen Bits weniger effizient ein | Bitrate erhöhen oder die GPU-Beschleunigung für finale Kopien ausschalten |
| GPU-Encoding fällt auf Software zurück | Nicht unterstütztes Format, ausgelasteter Encoder oder Treiberproblem | Grafiktreiber aktualisieren; im Konverter werden nur H.264 und HEVC auf der GPU kodiert |
| Ruckeln auf einem Laptop mit zwei GPUs | Frames wandern zwischen integrierter und dedizierter GPU | Die App auf der GPU laufen lassen, an der der Bildschirm hängt, oder Treiber aktualisieren |
| Der Bildschirm blitzt und das Bild erholt sich | Windows hat den Grafiktreiber zurückgesetzt (TDR) | Treiber aktualisieren; bei langen Exporten andere GPU-Last verringern |
| Hardwaredekodierung wirkt nicht schneller | Die CPU dekodiert diesen Codec schnell | Auf die CPU-Last achten: Der Gewinn ist die eingesparte CPU-Zeit |
Was das nicht leisten kann
- Hardwaredekodierung verbessert das Bild nicht. Decoder liefern dieselben Frames wie Software; nur die Arbeit verlagert sich.
- Hardware-Encoding schlägt ein langsames Software-Preset bei der Qualität pro Bit nicht. Es gewinnt bei Geschwindigkeit und Energie.
- Keine GPU beschleunigt jeden Codec. Die Unterstützung ist durch Chipgeneration und Treiber festgelegt.
- Zero-Copy braucht passende Hardware. Können zwei APIs oder zwei GPUs keinen Speicher teilen, nehmen die Frames den langsameren Weg über die CPU.
Fazit
Bei Hardwaredekodierung und -kodierung geht es darum, wo die Arbeit stattfindet: auf Festfunktionseinheiten statt auf der CPU und im Idealfall, ohne dass die Frames den GPU-Speicher verlassen. Schalten Sie die Hardwaredekodierung für flüssigeres Arbeiten ein, nutzen Sie GPU-Encoding, wenn Tempo wichtiger ist als das letzte Quäntchen Effizienz, und messen Sie beides auf Ihrem eigenen Rechner.
KwaFlux dekodiert, verarbeitet und kodiert Video auf Ihrer eigenen GPU, im Konverter und in jedem KI-Modul. Ihre Mediendateien werden für die Verarbeitung nicht hochgeladen. KwaFlux läuft unter Windows 10 (64-Bit, Version 1809 oder neuer), Windows 11 und macOS 12 oder neuer auf Apple Silicon. Dateien importieren und die App erkunden geht ohne Konto. Anmeldung und ein bezahlter Plan sind nur für Export, Konvertierung, Dateireparatur und Datei-Download aus einem Link nötig.
Auf eigenem Material testen
KwaFlux laden und Effekte vor dem Kauf kostenlos auf eigenem Material ansehen — ohne Konto, verarbeitet auf Ihrer GPU, ohne Upload Ihrer Medien. Videovorschauen laufen 1, 3 oder 5 Sekunden, Vorschauen der Stabilisierung 5, 15 oder 30 Sekunden.
Häufige Fragen
Ist Hardware-Encoding schlechter als Software-Encoding?
Bei gleicher Bitrate meist ja. Hardware-Encoder ziehen Geschwindigkeit und Energie der Effizienz vor und brauchen daher für dieselbe Qualität mehr Bits. In unserem Test erreichte der HEVC-Encoder der GPU den VMAF-Wert von x265 3,3-mal schneller, brauchte aber etwa 15 % mehr Bits.
Macht Hardwaredekodierung die Wiedergabe schneller?
Manchmal. Ihr Hauptgewinn ist die geringere CPU-Last: In unserem 4K-H.264-Test brauchte die Hardwaredekodierung bei ähnlicher Geschwindigkeit etwa 95 % weniger CPU-Zeit. Am meisten zählt das bei anspruchsvollen Codecs, hohen Auflösungen und wenn die CPU mit anderer Arbeit beschäftigt ist.
Was ist der Unterschied zwischen D3D11VA und NVDEC?
Beide nutzen auf einer NVIDIA-GPU dieselbe Dekodier-Hardware. D3D11VA ist die herstellerneutrale Schnittstelle von Microsoft und liefert Frames als D3D11-Texturen; NVDEC ist die eigene Schnittstelle von NVIDIA und liefert Frames zur Verarbeitung an CUDA. Apps wählen danach, wohin die Frames als Nächstes gehen.
Kann eine integrierte Grafik Video dekodieren und kodieren?
Ja. Die integrierten GPUs von Intel enthalten Quick Sync Video, und aktuelle Chips von AMD und Apple haben eigene Video-Engines. Unser Testlaptop dekodierte 4K-H.264 und kodierte HEVC auf seiner Iris-Xe-Grafik. Welche Codecs unterstützt werden, hängt von der Generation ab.
Warum wird meine 4:2:2-Datei in Software dekodiert?
Weil viele Video-Engines für Endkunden nur 4:2:0 dekodieren, das Format der meisten Auslieferungsvideos, und die Unterstützung für 4:2:2 erst mit einigen neueren Generationen kam. Die Softwaredekodierung funktioniert weiterhin, mit höherer CPU-Last. Die Formate erklärt Chroma-Subsampling erklärt.
Quellen
- NVIDIA, "NVIDIA Video Codec SDK" (hardware decoders and encoders separate from the CUDA cores; NVENC codecs; 4:2:2 encoding on Blackwell) (abgerufen am 2026-10-22)
- NVIDIA, "Video Encode and Decode GPU Support Matrix" (abgerufen am 2026-10-22)
- NVIDIA, CUDA Runtime API, "Direct3D 11 Interoperability" (abgerufen am 2026-10-22)
- Intel, "Intel Video Processing Library (Intel VPL)" (hardware decode, encode, and processing; VPL runtime for Iris Xe and newer, Media SDK for older graphics) (abgerufen am 2026-10-22)
- AMD GPUOpen, "Advanced Media Framework (AMF) SDK" (access to AMD video engines, compute shaders, and hardware accelerators) (abgerufen am 2026-10-22)
- Microsoft Learn, "Direct3D 11 Video APIs" (abgerufen am 2026-10-22)
- Microsoft Learn, "WDDM support for timeout detection and recovery" (TDR resets an unresponsive graphics card) (abgerufen am 2026-10-22)
- ONNX Runtime, "DirectML Execution Provider" (DirectML is a DirectX 12 library for machine learning across a broad range of hardware) (abgerufen am 2026-10-22)
- Khronos, "VK_KHR_external_memory_win32" reference page (abgerufen am 2026-10-22)
- Khronos OpenGL Registry, "WGL_NV_DX_interop2" (sharing Direct3D 10 and 11 resources with OpenGL) (abgerufen am 2026-10-22)
- Apple Developer, "Video Toolbox" (hardware-accelerated video encoding and decoding) (abgerufen am 2026-10-22)
- Apple Developer, "Metal" (graphics and compute on Apple GPUs) (abgerufen am 2026-10-22)
- Apple Newsroom, "Apple unleashes M1" (unified memory lets the chip's components access the same data without copying it between pools of memory) (abgerufen am 2026-10-22)
- Netflix, "VMAF" repository (vmaf_v0.6.1.json model) (abgerufen am 2026-10-22)
- FFmpeg documentation (`-hwaccel`, `-hwaccel_output_format`, `-init_hw_device`, `-benchmark`) (abgerufen am 2026-10-22)

