Mises à jour multimédias dans Chrome 62

François Beaufort
François Beaufort

Licences persistantes pour Android

Une licence persistante dans les extensions multimédias chiffrées (EME) signifie que la licence peut être conservée sur l'appareil afin que les applications puissent la charger en mémoire sans envoyer une autre demande de licence au serveur. C'est ainsi que la lecture hors connexion est prise en charge dans EME.

Jusqu'à présent, ChromeOS était la seule plate-forme compatible avec les licences persistantes. Ce n'est plus vrai. Il est désormais possible de lire des contenus protégés via EME lorsque l'appareil est hors connexion sur Android.

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.
});

Vous pouvez essayer les licences persistantes vous-même en consultant l'exemple de PWA multimédia et en procédant comme suit :

  1. Accédez à https://biograf-155113.appspot.com/ttt/episode-2/.
  2. Cliquez sur "Rendre disponible hors connexion" et attendez que la vidéo soit téléchargée.
  3. Activez le mode Avion.
  4. Cliquez sur le bouton de lecture et profitez de la vidéo.

Widevine L1 pour Android

Comme vous le savez peut-être déjà, tous les appareils Android doivent être compatibles avec le niveau de sécurité 3 de Widevine (Widevine L3). Cependant, de nombreux appareils sont également compatibles avec le niveau de sécurité le plus élevé: le niveau de sécurité Widevine 1, dans lequel l'ensemble du traitement, de la cryptographie et du contrôle du contenu sont effectués dans l'environnement d'exécution sécurisé (TEE).

Bonne nouvelle ! Widevine L1 est désormais compatible avec Chrome pour Android afin que les contenus multimédias puissent être lus de la manière la plus sécurisée possible. Notez qu'il était déjà compatible avec ChromeOS.

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.
});

Shaka Player, la bibliothèque JavaScript pour les formats multimédias adaptatifs (tels que DASH et HLS), propose une démonstration pour vous permettre d'essayer Widevine L1:

  1. Accédez à https://shaka-player-demo.appspot.com/demo/ et cliquez sur "Autoriser" lorsque vous y êtes invité.
  2. Sélectionnez "Angel One (multicodec, multilingue, Widevine)".
  3. Saisissez HW_SECURE_ALL dans le champ "Robustesse vidéo" de la section "Configuration".
  4. Cliquez sur le bouton "Charger" et profitez de la vidéo.

Optimisations des pistes vidéo en arrière-plan (MSE uniquement)

L'équipe Chrome cherche en permanence de nouvelles façons d'améliorer l'autonomie de la batterie, et Chrome 62 ne fait pas exception.

Chrome désactive désormais les pistes vidéo lorsque la vidéo est lue en arrière-plan (par exemple, dans un onglet non visible) si la vidéo utilise des extensions de source multimédia (MSE). Pour en savoir plus, consultez notre article précédent.

Personnaliser la plage de recherche sur les diffusions en direct MSE

Comme vous le savez peut-être déjà, l'attribut seekable contient les plages de la ressource multimédia que le navigateur peut rechercher. Il contient généralement une seule période qui commence à 0 et se termine à la durée de la ressource multimédia. Toutefois, si la durée n'est pas disponible (par exemple, pour une diffusion en direct), la plage horaire peut changer en permanence.

La bonne nouvelle est que vous pouvez désormais personnaliser plus efficacement la logique de plage seekable avec les extensions de source multimédia (MSE) en fournissant ou en supprimant une seule plage de recherche qui est associée aux plages tamponnées actuelles. Il en résulte une seule plage de recherche qui convient aux deux, lorsque la durée de la source multimédia est +Infinity.

Dans le code ci-dessous, la source multimédia a déjà été associée à un élément multimédia et ne contient que son segment init:

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) }

De nombreux cas ne sont pas abordés ci-dessus. Je vous suggère donc d'essayer l'exemple officiel pour voir comment les plages temporelles tamponnées et accessibles en lecture réagissent à différents événements MSE.

Intent to Ship | Outil de suivi de l'état de Chrome | Bug Chromium

FLAC au format MP4 pour MSE

Le format de codage audio sans perte FLAC est compatible avec la lecture multimédia standard depuis Chrome 56. Peu après, le format FLAC compatible avec ISO-BMFF (ou FLAC en MP4) a été ajouté. FLAC au format MP4 est désormais disponible dans Chrome 62 pour les extensions de source multimédia (MSE).

À titre d'information, Firefox a développé et implémenté la compatibilité avec une spécification d'encapsulation FLAC dans MP4, et la BBC a expérimenté son utilisation avec MSE. Pour en savoir plus, consultez l'article Delivering Radio 3 Concert Sound (Reproduire le son des concerts de Radio 3) de la BBC.

Voici comment savoir si le format FLAC au format MP4 est compatible avec MSE:

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

Pour voir un exemple dans son intégralité, consultez notre extrait officiel.

Intent to Ship | Outil de suivi de l'état de Chrome | Bug Chromium

La vidéo passe automatiquement en plein écran lors de la rotation de l'appareil

Si vous faites pivoter un appareil en mode paysage alors qu'une vidéo est en cours de lecture dans le viewport, la lecture passe automatiquement en mode plein écran. Si vous faites pivoter l'appareil en mode portrait, la vidéo revient en mode fenêtré. Pour en savoir plus, consultez notre article précédent.