Wir durchqueren die (Medien-)Streams, Ray

Joe Medley
Joe Medley

Bei der Verwendung von Media Source Extensions (MSE) in Chrome ist es derzeit nicht möglich, zwischen verschlüsselten und unverschlüsselten Streams zu wechseln. Dies ist tatsächlich nicht durch die MSE-Spezifikation untersagt. Vielmehr bezieht sich diese Einschränkung hauptsächlich darauf, wie die Medienpipeline für die Unterstützung von Encrypted Media Extensions (EME) eingerichtet ist.

Bei MSE müssen Medienstreams mit einem Initialisierungssegment beginnen, das Informationen wie Codec-Initialisierungsdaten und Verschlüsselungsinformationen enthält. Normalerweise befindet sich das Initialisierungssegment am Anfang einer Mediendatei. Wenn Medien also per Download oder MSE an ein Medienelement angehängt werden, funktionieren sie einfach.

Das Problem tritt auf, wenn du versuchst, die Medieneigenschaften mitten im Stream zu ändern. Zum Ändern der Medieneigenschaften muss ein neues Initialisierungssegment übergeben werden. Bei den meisten Eigenschaften funktioniert das. Die Wiedergabe wird fortgesetzt. Die einzige Ausnahme sind die Verschlüsselungseinstellungen. Die Verschlüsselungseinstellungen des ersten Initialisierungssegments geben nur an, ob die Streamsegmente verschlüsselt werden können. Es können also leere Mediensegmente in den Stream eingefügt werden. Folglich ist es für einen unverschlüsselten Stream mit nur einem einzigen verschlüsselten Segment erforderlich, dass im Initialisierungssegment Verschlüsselungsinformationen enthalten sind. Daher sind Behelfslösungen für die Anzeigenbereitstellung erforderlich, die nicht für andere Plattformen gelten.

Ab Chrome 58 ändert sich all das. Sie können jetzt im selben Stream zwischen verschlüsselt und unverschlüsselt wechseln. Dies verbessert die Kompatibilität, da Verhaltensweisen abgeglichen werden, die bereits in Firefox und Edge vorhanden sind.

Dies hat einige Einschränkungen. Wenn Sie verschlüsselte Segmente in Ihren Medienstreams erwarten, müssen Sie zuerst die MediaKeys im Voraus festlegen. Wie zuvor können HTTP und HTTPS nicht in derselben Quelle kombiniert werden.