Medienupdates in Chrome 62

Beaufort
François Beaufort

Dauerhafte Lizenzen für Android

Eine persistente Lizenz in Encrypted Media Extensions (EME) bedeutet, dass die Lizenz auf dem Gerät beibehalten werden kann, sodass Anwendungen die Lizenz in den Arbeitsspeicher laden können, ohne eine weitere Lizenzanfrage an den Server zu senden. So wird die Offlinewiedergabe in EME unterstützt.

Bisher war ChromeOS die einzige Plattform, die dauerhafte Lizenzen unterstützt. Das stimmt nicht mehr. Unter Android ist es jetzt auch möglich, geschützte Inhalte über EME offline wiederzugeben.

const config = [{
  sessionTypes: ['persistent-license'],
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'SW_SECURE_DECODE' // Widevine L3
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content while being offline when
  // license is stored locally on device and loaded later.
})
.catch(error => {
  // Persistent licenses are not supported on this platform yet.
});

Sie können persistente Lizenzen selbst ausprobieren. Dazu rufen Sie die Beispielmedien-PWA auf und gehen so vor:

  1. Rufen Sie https://biograf-155113.appspot.com/ttt/episode-2/ auf.
  2. Klicke auf "Offline bereitstellen" und warte, bis das Video heruntergeladen wurde.
  3. Aktivieren Sie den Flugmodus.
  4. Klicke auf die Wiedergabeschaltfläche und genieße das Video!

Widevine L1 für Android

Wie Sie vielleicht bereits wissen, müssen alle Android-Geräte Widevine Security Level 3 (Widevine L3) unterstützen. Es gibt jedoch viele Geräte, die auch die höchste Sicherheitsstufe unterstützen: Widevine Security Level 1, bei dem die gesamte Inhaltsverarbeitung, Kryptografie und Kontrolle innerhalb der vertrauenswürdigen Ausführungsumgebung (Trusted Execution Environment, TEE) durchgeführt wird.

Gute Neuigkeiten! Widevine L1 wird jetzt in Chrome für Android unterstützt, sodass Medien möglichst sicher wiedergegeben werden können. Hinweis: Diese Option wurde bereits unter Chrome OS unterstützt.

const config = [{
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'HW_SECURE_ALL' // Widevine L1
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content in the most secure way.
})
.catch(error => {
  // Widevine L1 is not supported on this platform yet.
});

Im Shaka-Player, der JavaScript-Bibliothek für adaptive Medienformate wie DASH und HLS, können Sie Widevine L1 in einer Demo ausprobieren:

  1. Rufen Sie https://shaka-player-demo.appspot.com/demo/ auf und klicken Sie auf "Zulassen", wenn Sie dazu aufgefordert werden.
  2. Wählen Sie "Angel One (multicodec, multilingual, Widevine)" aus.
  3. Geben Sie im Bereich „Konfiguration“ in das Feld „Video-Robustheit“ den Wert HW_SECURE_ALL ein.
  4. Klicke auf die Schaltfläche "Laden" und genieße das Video!

Optimierungen des Hintergrund-Video-Tracks (nur MSE)

Das Chrome-Team ist stets auf der Suche nach neuen Möglichkeiten, die Akkulaufzeit zu verlängern. Chrome 62 ist da keine Ausnahme.

Chrome deaktiviert jetzt Videotracks, wenn das Video im Hintergrund (z.B. auf einem nicht sichtbaren Tab) abgespielt wird, wenn das Video Media Source Extensions (MSE) verwendet. Weitere Informationen finden Sie im vorherigen Artikel.

Suchbereich in MSE-Livestreams anpassen

Wie Sie vielleicht bereits wissen, enthält das Attribut seekable die Bereiche der Medienressource, nach denen der Browser suchen kann. Normalerweise enthält sie einen einzelnen Zeitraum, der bei 0 beginnt und bei der Dauer der Medienressource endet. Ist die Dauer jedoch nicht verfügbar, beispielsweise bei einem Livestream, kann sich der Zeitraum kontinuierlich ändern.

Die gute Nachricht ist, dass Sie die seekable-Bereichslogik jetzt mit Media Source Extensions (MSE) effektiver anpassen können, indem Sie einen einzelnen suchbaren Bereich angeben oder entfernen, der mit den aktuellen zwischengespeicherten Bereichen verbunden ist. Dies führt zu einem einzelnen suchbaren Bereich, der zu beiden passt, wenn die Dauer der Medienquelle +Infinity ist.

Im folgenden Code wurde die Medienquelle bereits an ein Medienelement angehängt und enthält nur das zugehörige Init-Segment:

const mediaSource = new MediaSource();
...

mediaSource.duration = +Infinity;
// Seekable time ranges: { }
// Buffered time ranges: { }

mediaSource.setLiveSeekableRange(1 /* start */, 4 /* end */);
// Seekable time ranges: { [1.000, 4.000) }
// Buffered time ranges: { }

// Let's append a media segment that starts at 3 seconds and ends at 6.
mediaSource.sourceBuffers[0].appendBuffer(someData);
// Seekable time ranges: { [1.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

mediaSource.clearLiveSeekableRange();
// Seekable time ranges: { [0.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

Es gibt viele Fälle, die ich oben nicht behandelt habe. Daher empfehle ich dir, das offizielle Beispiel auszuprobieren, um zu sehen, wie gepufferte und suchbare Zeiträume auf verschiedene ME-Ereignisse reagieren.

Absendeabsicht | Chromestatus-Tracker | Chromium-Programmfehler

FLAC in MP4 für MSE

Das verlustfreie Audiocodierungsformat FLAC wird seit Chrome 56 bei der regulären Medienwiedergabe unterstützt. Kurz darauf wurde FLAC in ISO-BMFF (auch FLAC in MP4 genannt) hinzugefügt. Und jetzt ist FLAC in MP4 in Chrome 62 für Media Source Extensions (MSE) verfügbar.

Firefox-Leute sind diejenigen, die Unterstützung für eine FLAC-in-MP4-Datenkapselungsspezifikation entwickelt und implementiert haben. Die BBC hat dies mit MSE getestet. Weitere Informationen findest du im Post „Delivering Radio 3 Konzert Sound“ der BBC.

So finden Sie heraus, ob FLAC in MP4 für MSE unterstützt wird:

if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
  // TODO: Fetch data and feed it to a media source.
}

Ein vollständiges Beispiel findest du in unserem offiziellen Beispiel.

Absendeabsicht | Chromestatus-Tracker | Chromium-Programmfehler

Automatisches Video wechselt in den Vollbildmodus, wenn das Gerät gedreht wird

Wenn du ein Gerät während der Wiedergabe eines Videos im Darstellungsbereich ins Querformat drehst, wechselt die Wiedergabe automatisch in den Vollbildmodus. Durch das Drehen des Geräts ins Hochformat versetzt sich das Video wieder im Fenstermodus. Weitere Informationen finden Sie im vorherigen Artikel.