Die HDR-Videowiedergabe (High Dynamic Range) auf Mobilgeräten hat oft einen großen Nachteil: visuelle Inkonsistenzen auf verschiedenen Displays. Beim Durchsuchen von Feeds mit gemischten Inhalten, in denen SDR-Elemente (Standard Dynamic Range) und HDR-Elemente nebeneinander existieren, haben Rendering-Pipelines Schwierigkeiten, sie auszugleichen. Dies führt zu unregelmäßigen, störenden Übergängen und unvorhersehbaren Helligkeitsspitzen.
Für Creator kann dies die künstlerische Intention beeinträchtigen. Ein HDR-Video, das auf einem professionellen Monitor sorgfältig abgestuft wurde, kann auf einem Consumer-Gerät mit abgeschnittenen Lichtern, ausgewaschenen Tönen oder unterdrückten Schatten wiedergegeben werden.
Eclipsa-Videos sind ein moderner HDR-Videostandard, der genau für diese geräteübergreifenden Ökosystemherausforderungen entwickelt wurde. Eclipsa-Video basiert auf der SMPTE ST 2094-50-Spezifikation und ermöglicht es Displays, die Inhaltszuordnung dynamisch an die physischen Hardwarefunktionen und die Umgebungsbeleuchtung in Echtzeit anzupassen. Eclipsa Video basiert auf einer integrierten, konfigurationslosen Integration in Jetpack Media3 ExoPlayer und standardmäßige Camera2-Aufnahmepipelines. Es bietet mobilen Entwicklerteams eine kostenlose, reibungslose Möglichkeit, Hardware-adaptives Videostreaming der nächsten Generation zu implementieren, das auf jedem Bildschirm die künstlerische Intention beibehält.
Technische Architektur von SMPTE ST 2094-50
Mobile Displays unterscheiden sich erheblich in ihrem Luminanz-Headroom, also der Helligkeit, die über dem Weißpunkt des Displays verfügbar ist. Wenn die Hardwareeinschränkungen eines Displays nicht mit den Mastering-Anforderungen eines HDR-Videos übereinstimmen, werden Highlights möglicherweise abgeschnitten oder sehen matt aus. Der tatsächliche Headroom und der Referenzweißpunkt eines Displays ändern sich dynamisch, wenn Umgebungslichtsensoren das Panel an die Umgebung anpassen.
SMPTE ST 2094-50 löst dieses Problem durch die Einführung von zweischichtigen Metadaten, die für visuelle Konsistenz sorgen. Das geschieht durch zwei primäre Säulen:
Der Referenzanker für Weiß
Dadurch wird eine strenge Baseline festgelegt, die die Spitzenhelligkeit von SDR-Elementen direkt dem Weißpunkt des Displays zuordnet. Alle Helligkeitswerte, die diesen Anker überschreiten, sind ausschließlich für HDR-Spitzlichter reserviert. Dieser vorhersehbare Verankerungsmechanismus sorgt dafür, dass SDR- und HDR-Ebenen, wenn sie auf dem Bildschirm zusammengesetzt werden, ihr beabsichtigtes visuelles Verhältnis beibehalten, ohne sich gegenseitig zu überstrahlen.
Headroom-adaptive Gewinnkurven (AGTM)
Anstatt eine statische Tone-Mapping-Kurve zu erzwingen, betten Ersteller parametrische Metadaten ein, die der Display-Pipeline genau mitteilen, wie sie skaliert werden soll, wenn nur wenig Headroom verfügbar ist. Der Standard gibt Erstellern die detaillierte Flexibilität, genau festzulegen, ob ein bestimmtes Panel Highlights soft-clippen, hard-clippen oder Mitteltöne und Schatten komprimieren soll, um die feinsten Details in hellen Bereichen aktiv zu erhalten.
Plattform-Support
Die Unterstützung für die Eclipsa-Videowiedergabe und -Aufnahme auf Plattformebene wird in Android 17 (API-Level 37) eingeführt.
Wiedergabe implementieren
Für die Standard-App-Entwicklung bietet Media3 ExoPlayer sofortige Unterstützung für Eclipsa-Videos. Beim Parsen von Dateien, in die SMPTE 2094-50-Metadaten eingebettet sind, extrahiert und wendet ExoPlayer die Metadaten nahtlos an. Es sind keine benutzerdefinierten Playerkonfigurationen erforderlich.
Standardmäßige Player-Initialisierung:Informationen zum Instanziieren der Player-Oberfläche finden Sie in der Übersicht über Media3 ExoPlayer.
Track-Überschreibungen erfassen:Wenn Ihre App bestimmte HDR-Profile programmatisch abfragt oder sperrt, lesen Sie den Abschnitt zur Media3-API zur Auswahl von Tracks.
Wir empfehlen, die Wiedergabepipelines auf Jetpack Media3 auszulagern. ExoPlayer übernimmt die Container-Extraktion auf niedriger Ebene nativ. Dadurch werden bekannte Dekodierungsartefakte auf Plattformebene, die in alten Rendering-Layern in Android 16 (API-Level 36) und niedriger vorhanden sind, vollständig umgangen.
Videoaufnahme implementieren
Wenn Sie Eclipsa-Videos auf einem Gerät aufnehmen möchten, muss Ihre Kamerapipeline so konfiguriert sein, dass AGTM-Metadaten generiert werden. Dazu müssen Sie ein kompatibles Profil für den dynamischen Bereich zuweisen.
Nachdem die Geräteunterstützung mit CameraCharacteristics validiert wurde, leite den Stream mit dem Profil DynamicRangeProfiles.HLG10_SMPTE_2094_50 an deine Encoderoberfläche weiter. Eine Anleitung zum Abfragen und Konfigurieren von Profilen für den Dynamikbereich in Kamerasitzungen findest du unter HDR-Videoaufnahme.
Für AGTM-Metadaten ist keine explizite Codec-Konfiguration erforderlich. Das Android-Media-Framework hängt die Metadaten automatisch an und übergibt sie, sofern sie im aktiven dynamischen Profil vorhanden sind.
Hinweise zu Kompatibilität und Leistung
Um die Leistung zu überwachen, rufen Sie das aktive Display-Objekt ab und prüfen Sie dessen overlayProperties auf LutProperties, um die Verfügbarkeit von hardwarebeschleunigten Pfaden zu ermitteln.
Für Geräte ohne Hardwarebeschleunigung wird derzeit die Möglichkeit entwickelt, die Eclipsa-Videowiedergabe im ExoPlayer zu deaktivieren.
Zusätzliche Ressourcen
- SMPTE ST 2094-50-Spezifikation
- HDR Explorer: Web-App zum Prüfen von SMPTE ST 2094-50-Metadaten und Gain-Kurven