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 aujourd'hui. 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 tester les licences persistantes 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é Widevine 1, où l'ensemble du traitement du contenu, de la cryptographie et du contrôle est effectué dans l'environnement d'exécution sécurisé (TEE).

Bonne nouvelle ! Widevine L1 est désormais compatible avec Chrome pour Android, ce qui permet de lire les contenus multimédias de la manière la plus sécurisée. Notez qu'elle était déjà compatible avec 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/ 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 "Fiabilité 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 toujours 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 (dans un onglet non visible, par exemple) si la vidéo utilise Media Source Extensions (MSE). Consultez notre article précédent pour en savoir plus.

Personnaliser la portée de recherche pour 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. Généralement, elle contient 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 (pour une diffusion en direct, par exemple), la période peut changer continuellement.

La bonne nouvelle est que vous pouvez désormais personnaliser plus efficacement la logique de plage seekable avec des Media Source Extensions (MSE) en fournissant ou en supprimant une seule plage pouvant être recherchée associée aux plages actuellement mises en mémoire tampon. Il en résulte une seule plage pouvant être recherchée pour les 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) }

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 périodes mises en mémoire tampon et consultables réagissent à différents événements MSE.

Intention de livraison | 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. Le fichier FLAC compatible avec le format ISO-BMFF (aussi appelé FLAC en MP4) a été ajouté peu de temps après. Les fichiers FLAC au format MP4 sont désormais disponibles dans Chrome 62 pour les extensions Microsoft Source (Media Source Extensions).

Pour information, ce sont les développeurs et les utilisateurs de Firefox qui ont développé et mis en œuvre la prise en charge d'une spécification d'encapsulation pour FLAC en MP4, et la BBC a expérimenté l'utilisation de cette spécification avec MSE. Vous pouvez lire l'article de la BBC "Delivering Radio 3 Concert Sound" sur la chaîne de la BBC pour en savoir plus.

Pour déterminer si le fichier 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.
}

Si vous voulez voir un exemple complet, découvrez notre échantillon officiel.

Intention de livraison | Outil de suivi Chromestatus | Bug Chromium

La vidéo s'affiche automatiquement en plein écran lorsque vous faites pivoter l'appareil.

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