Ein Desktop-Tool für Tone-Mapping mit FFmpeg- und HandBrake-Unterstützung, vielen Kurven und echtem BT.2390 auf der GPU. 10-Bit- und 12-Bit-Ausgabe kostenlos inklusive.
Wie der Film tatsächlich aussieht, hängt vollständig von der Verarbeitung ab — gar keine Konvertierung, die schnelle Vermutung eines Media-Players oder ein echter BT.2390-Durchlauf.
Eine unveränderte HDR-Datei auf einem Display oder Projektor abzuspielen, der HDR nicht versteht — die PQ/HLG-Kurve wird so angezeigt, als wäre sie SDR, wodurch alles grau, flach und blass wirkt.
Player wie VLC wenden ihr eigenes schnelles Tone-Mapping an, damit die Wiedergabe wenigstens ansehbar ist — meist eine grobe, feste Kurve, die Lichter abschneidet oder Farben verschiebt, kein bewusster BT.2390-Durchlauf mit selbst gewählter Kurve.
Die echte ITU-R-BT.2390-EETF, ausgeführt auf der GPU über libplacebo — kontrollierter Lichter-Rolloff und präzise Farben, ausgegeben als echte SDR-Datei für jedes Standarddisplay.
Dasselbe Quellvideo, drei wirklich unterschiedliche Pipelines. Nichts wird hinter einem „Auto“-Knopf versteckt — es läuft genau das Backend und die Kurve, die Sie wählen.
Der klassische tonemap-Filter. Schnell, funktioniert überall, wo FFmpeg läuft, keine GPU nötig.
Führt die echte ITU-R-BT.2390-EETF auf der GPU über libplacebo aus — dieselbe Referenzkurve, auf der die meisten HDR-zu-SDR-Abstimmungen basieren.
Ein alternativer Encode-Pfad über HandBrakeCLI für Fälle, in denen dessen eigene Pipeline bei einer bestimmten Quelle besser funktioniert.
Aufgebaut um die Dinge, die bei Tone-Mapping mit echtem Material tatsächlich schiefgehen: die falsche Kurve, der falsche Encoder oder ein Prozess, der sich während des Laufs die ganze Maschine unter den Nagel reißt.
Source (keine Skalierung), 4K, 1440p, 1080p, 720p oder 480p. Die Skalierung richtet sich nach der Höhe, die Breite wird automatisch berechnet, sodass das Seitenverhältnis der Quelle nie verzerrt wird.
Quelle auswählen — sie wird sofort gelesen: Übertragungscharakteristik, Farbtiefe, Dauer, HDR10+/Dolby-Vision-Metadaten — mit einer für diese Datei vorgeschlagenen Kurve. Der SDR-Ausgabepfad wird automatisch ausgefüllt, und eine Videodatei auf das Fenster zu ziehen funktioniert genauso wie „Durchsuchen“.
Ein echter, dekodierter und tone-gemappter Frame aus Ihrer Quelle, der sich bei Änderungen aktualisiert, mit einer Schatten-/Licht-Clipping-Prüfung, damit eine detailzerstörende Kurve schon vor dem vollständigen Encode auffällt. Als Vollbild ansehen oder den Frame direkt speichern.
Aktualisiert sich automatisch bei Änderungen an Qualität, Auflösung oder Encoder, sodass eine überraschende CRF/Auflösungs-Kombination schon vor „Start“ sichtbar ist.
Mit dem Mauszeiger über eine Tone-Mapping-Kurve fahren für eine klare Erklärung der tatsächlichen Kompromisse — keine Marketingtexte.
x264/x265 auf der CPU oder Hardware-Encoding über NVIDIA NVENC, AMD AMF oder Apple VideoToolbox, in H.264 oder H.265.
Kostenlos, ohne Lizenz, keine separate Version. 10-Bit funktioniert mit jedem H.265-Encoder (CPU oder Hardware); 12-Bit ist über libx265 auf der CPU verfügbar — die App zeigt nur Encoder, die die gewählte Farbtiefe tatsächlich unterstützen.
Öffnet den vollen CRF/CQ-Bereich (0–51), eine Helligkeitsanpassung und die zusätzlichen Tone-Map-Kurven — bleibt verborgen, bis Sie sie brauchen.
CUDA-/DXVA2-/VideoToolbox-Decoding für das FFmpeg-Backend, sodass die GPU sowohl liest als auch tone-mapped.
Effizienz, Ausgewogen oder Leistung, plus ein Live-CPU-Kern-Limit — beides bei „Start“ angewendet und während einer laufenden Konvertierung anpassbar, damit ein langer Batch nicht den Rest Ihres Rechners blockiert.
Ein einklappbares Live-Log zeigt die tatsächliche FFmpeg-/HandBrake-Ausgabe und den Fortschritt; ein System-Panel meldet, was auf Ihrem System erkannt wurde — FFmpeg, Vulkan, HandBrakeCLI — bevor Sie konvertieren.
Fehlendes FFmpeg oder HandBrakeCLI wird über winget direkt aus der App installiert — über das System-Panel oder die „Schnellinstallation“ direkt daneben — der Installationsverlauf wird live in „Aktivität“ angezeigt.
Ein Windows-Build, wenn Sie es einfach ausführen möchten, oder der Quellcode, wenn Sie macOS/Linux nutzen oder den Code zuerst lesen möchten.
Single-File-Build, kein Python nötig. FFmpeg wird weiterhin separat benötigt — oder in der App über winget installieren.
Immer die neueste Version · Windows 10/11
Benötigt Python 3.10+ und pip install -r requirements.txt. Läuft unter Windows, macOS und Linux.
MIT-lizenziert · main-Branch
Die App ist ein einzelnes PySide6-Skript. Kein Installer, kein Hintergrunddienst — Sie starten es, und es ruft direkt FFmpeg (und optional HandBrakeCLI) auf.
Was vor dem Start auf dem Rechner vorhanden sein muss.
| Komponente | Benötigt für |
|---|---|
| Python 3.10+ | Ausführung der App selbst |
| PySide6 | Die Qt-basierte Oberfläche |
| FFmpeg | Standard- und GPU-Tone-Mapping-Backends |
| Vulkan-fähige GPU + Treiber | Speziell das libplacebo/BT.2390-Backend |
| HandBrakeCLI (optional) | Das HandBrake-Backend |
| psutil (optional) | Live-Pause/Fortsetzen, CPU-Kern-Steuerung und CPU/GPU-Ressourcenstatistiken |
Drei Befehle, dann sehen Sie das Fenster.
# 1. Skript und Python-Abhängigkeiten holen pip install PySide6 psutil # 2. Sicherstellen, dass FFmpeg im PATH liegt ffmpeg -version # 3. Starten python hdr_to_sdr_gui_qt.py
Von der HDR-Quelldatei zur SDR-Ausgabe.
All dies sind echte, dokumentierte FFmpeg-/libplacebo-Tone-Mapping-Optionen — nichts davon ist erfunden.
| Kurve | Backend | Wann verwenden |
|---|---|---|
| BT.2390 | GPU | Standardwahl — die Referenz-EETF, auf die die meisten HDR-zu-SDR-Abstimmungen abzielen |
| Hable | CPU | Filmischer Rolloff, keine GPU nötig |
| Reinhard / Mobius | CPU | Sanftere Licht-Rolloff-Alternativen zu Hable |
| BT.2446A | GPU · Pro | Broadcast-orientierte Alternative zu BT.2390 |
| ST2094-10 / ST2094-40 | GPU · Pro | Dynamisches Tone-Mapping; ST2094-40 nutzt HDR10+-Metadaten, falls vorhanden |
| Linear / Gamma / Clip / None | CPU · Pro | Diagnose- oder manuelle Abstimmungsdurchläufe, nicht für den allgemeinen Gebrauch |
Das System-Panel ist die erste Anlaufstelle — es zeigt genau, was erkannt wurde, bevor Sie dies als Bug melden.