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 qu'elle peut être conservée sur l'appareil afin que les applications puissent la charger en mémoire sans envoyer d'autre demande de licence au serveur. C'est ainsi que la lecture hors connexion est prise en charge dans les EME.

Jusqu'à présent, ChromeOS était la seule plate-forme compatible avec les licences persistantes. Ce n'est plus vrai. Désormais, la lecture de contenu protégé via EME lorsque l'appareil est hors connexion est également possible 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 par vous-même en consultant l'exemple de PWA Media 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 Widevine Security Level 3 (Widevine L3). Cependant, de nombreux appareils sont également compatibles avec le niveau de sécurité le plus élevé: le niveau de sécurité 1 de Widevine, 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. Notez qu'elle était déjà prise en charge sur Chrome OS.

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/, puis cliquez sur "Autoriser" lorsque vous y êtes invité.
  2. Choisissez "Angel One (multicodec, multilingual, Widevine)".
  3. Saisissez HW_SECURE_ALL dans le champ "Robustesse de la vidéo" de la section "Configuration".
  4. Cliquez sur le bouton "Charger" et profitez de la vidéo !

Optimisations de la piste vidéo en arrière-plan (MSE uniquement)

L'équipe Chrome cherche constamment 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 sources multimédias (MSE). Pour en savoir plus, consultez notre article précédent.

Personnaliser la plage pouvant être recherchée dans les flux MSE en direct

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, elle peut changer continuellement.

La bonne nouvelle est que vous pouvez désormais personnaliser plus efficacement la logique de la plage seekable avec des extensions de sources multimédias (MSE, Media Source Extensions) en fournissant ou en supprimant une seule plage pouvant être recherchée qui est unie aux plages actuelles en mémoire tampon. Il en résulte une seule plage pouvant être recherchée qui correspond aux deux, lorsque la durée de la source multimédia est de +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) }

Il existe de nombreux cas que je n'ai pas abordés ci-dessus. Je vous suggère donc d'essayer l'échantillon officiel pour voir comment les plages de temps mises en mémoire tampon et pouvant être recherchées réagissent aux différents événements de MSE.

Intention d'expédition | Outil de suivi Chromestatus | Bug Chromium

FLAC au format MP4 pour MSE

Le format de codage audio sans perte FLAC est compatible avec la lecture de contenus multimédias standards depuis Chrome 56. Peu après, le format FLAC compatible avec ISO-BMFF (ou FLAC en MP4) a été ajouté. Les fichiers FLAC au format MP4 sont désormais disponibles 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, vous pouvez lire l'article Delivering Radio 3 Concert Sound de la BBC.

Pour vérifier 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.

Intention d'expédition | Outil de suivi Chromestatus | 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 pendant la lecture d'une vidéo dans la fenêtre d'affichage, la lecture passe automatiquement en mode plein écran. En faisant pivoter l'appareil en mode portrait, la vidéo repasse en mode fenêtre. Pour en savoir plus, consultez notre article précédent.