Medienupdates in Chrome 62

François 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 dauerhaft gespeichert 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.

Bislang war ChromeOS die einzige Plattform, die persistente Lizenzen unterstützt. Das stimmt nicht mehr. Das Abspielen geschützter Inhalte über EME ist jetzt auch auf Android möglich, während das Gerät offline ist.

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 selbstständig dauerhafte Lizenzen ausprobieren. Sehen Sie sich dazu die Beispielmedien-PWA an und gehen Sie so vor:

  1. Rufen Sie https://biograf-155113.appspot.com/ttt/episode-2/ auf.
  2. Klicke auf „Offline verfügbar machen“ 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-Sicherheitsstufe 3 (Widevine L3) unterstützen. Es gibt jedoch viele Geräte, die auch das höchste Sicherheitsniveau unterstützen: Widevine-Sicherheitsstufe 1. Hier wird die gesamte Inhaltsverarbeitung, Kryptografie und Steuerung innerhalb der vertrauenswürdigen Ausführungsumgebung (Trusted Execution Environment, TEE) durchgeführt.

Gute Neuigkeiten! Widevine L1 wird jetzt in Chrome für Android unterstützt, sodass Medien auf die sicherste Weise abgespielt werden können. Beachten Sie, dass dies bereits unter ChromeOS unterstützt wurde.

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, findest du eine Demo, mit der du Widevine L1 ausprobieren kannst:

  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 unter „Konfiguration“ in das Feld „Robustheit von Videos“ den Wert HW_SECURE_ALL ein.
  4. Klicke auf die Schaltfläche "Laden" und genieße das Video!

Optimierung von Videotracks im Hintergrund (nur MSE)

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

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

Den suchbaren Bereich bei MSE-Livestreams anpassen

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

Die gute Nachricht ist, dass Sie die seekable-Bereichslogik 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. Es wird ein einzelner suchbarer Bereich zurückgegeben, 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 dessen 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 Ihnen, das offizielle Beispiel auszuprobieren, um zu sehen, wie zwischengespeicherte und suchbare Zeiträume auf verschiedene MSE-Ereignisse reagieren.

Versandabsicht | 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-Unterstützung (auch FLAC in MP4 genannt) hinzugefügt. FLAC in MP4 ist jetzt in Chrome 62 für Media Source Extensions (MSE) verfügbar.

Für Firefox sind diejenigen, die Unterstützung für eine FLAC-in-MP4-Kapselungsspezifikation entwickelt und implementiert haben. Die BBC hat mit der Verwendung dieser Spezifikation mit MSE experimentiert. Weitere Informationen findest du im BBC-Beitrag "Delivering Radio 3 Concert Sound".

So können Sie feststellen, 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.

Versandabsicht | Chromestatus Tracker | Chromium-Programmfehler

Das automatische Video wird im Vollbildmodus angezeigt, wenn das Gerät gedreht wird.

Wenn Sie ein Gerät ins Querformat drehen, während ein Video im Darstellungsbereich wiedergegeben wird, wechselt die Wiedergabe automatisch in den Vollbildmodus. Wenn du das Gerät ins Hochformat drehst, versetzt du das Video wieder im Fenstermodus. Weitere Informationen findest du in diesem Artikel.