Mises à jour audio et vidéo dans Chrome 70

François Beaufort
François Beaufort

Regarder une vidéo en mode Picture-in-picture

Le Picture-in-picture (PIP) permet aux utilisateurs de regarder des vidéos dans une fenêtre flottante (toujours au-dessus des autres fenêtres) afin de pouvoir garder un œil sur ce qu'ils regardent tout en interagissant avec d'autres sites ou applications. La nouvelle API Web Picture-in-Picture vous permet de lancer et de contrôler le Picture-in-Picture pour les vidéos sur votre site Web.

Pour en savoir plus, consultez notre article.

Décodeur AV1

AV1 est un codec de nouvelle génération développé par l'Alliance for Open Media. AV1 améliore le rendement de compression de plus de 30 % par rapport au codec vidéo phare du moment, VP9. Chrome 70 ajoute un décodeur AV1 à Chrome Desktop x86-64 basé sur la spécification officielle du flux binaire. Pour le moment, la prise en charge est limitée au profil 0 "Main" et n'inclut pas les fonctionnalités d'encodage. Le conteneur compatible est MP4 (ISO-BMFF). Pour une brève explication des conteneurs, consultez De la vidéo brute au format Web.

Pour essayer AV1 :

  • Accédez à la page YouTube TestTube.
  • Sélectionnez "Utiliser AV1 pour la SD" ou "Toujours utiliser AV1" pour obtenir la résolution AV1 souhaitée. Notez qu'à des résolutions plus élevées, le format AV1 est plus susceptible de rencontrer des problèmes de performances de lecture sur certains appareils.
  • Essayez de lire des extraits YouTube de la playlist de lancement de la version bêta d'AV1.
  • Vérifiez le codec av01 dans "Statistiques avancées".
Statistiques avancées avec AV1 sur YouTube.
Figure 1. Statistiques avancées avec AV1 sur YouTube.

Compatibilité avec le changement de codec et de conteneur dans MSE

Chrome ajoute la prise en charge des transitions améliorées entre codecs ou entre flux d'octets dans la lecture Media Source Extensions à l'aide d'une nouvelle méthode changeType() sur SourceBuffer. Il permet de modifier ultérieurement le type d'octets multimédias ajoutés à SourceBuffer.

La version actuelle de MSE est compatible avec la lecture adaptative des contenus multimédias. Toutefois, l'adaptation exige que tout contenu multimédia ajouté à un SourceBuffer soit conforme au type MIME fourni lors de la création initiale du SourceBuffer via MediaSource.addSourceBuffer(type). Les codecs de ce type et tous les segments d'initialisation précédemment analysés doivent rester identiques tout au long du processus. Cela signifie que le site Web doit prendre des mesures explicites pour effectuer le changement de codec ou de flux d'octets (en utilisant plusieurs éléments multimédias ou pistes SourceBuffer et en passant de l'un à l'autre), ce qui augmente la complexité de l'application et la latence visible par l'utilisateur. (Ces transitions nécessitent que l'application Web effectue une action synchrone sur le thread principal du moteur de rendu.) Cette latence de transition nuit à la fluidité de la lecture multimédia lors des transitions.

Avec sa nouvelle méthode changeType(), un SourceBuffer peut mettre en mémoire tampon et prendre en charge la lecture de différents formats de flux d'octets et codecs. Cette nouvelle méthode conserve les éléments multimédias précédemment mis en mémoire tampon, modulo l'éviction ou la suppression des futurs frames codés MSE, et exploite la logique d'épissage et de mise en mémoire tampon de l'algorithme de traitement des frames codés MSE existant.

Voici comment utiliser la méthode changeType() :

    const sourceBuffer = myMediaSource.addSourceBuffer('video/webm; codecs="opus, vp09.00.10.08"');
    sourceBuffer.appendBuffer(someWebmOpusVP9Data);

    // Later on...
    if ('changeType' in sourceBuffer) {
      // Change source buffer type and append new data.
      sourceBuffer.changeType('video/mp4; codecs="mp4a.40.5, avc1.4d001e"');
      sourceBuffer.appendBuffer(someMp4AacAvcData);
    }

Comme prévu, si le type transmis n'est pas pris en charge par le navigateur, cette méthode génère une exception NotSupportedError.

Consultez l'exemple pour tester la mise en mémoire tampon et la lecture inter-codec et inter-bytestream d'un élément audio.

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

Opus au format MP4 pour MSE

Le codec audio Opus, ouvert et très polyvalent, est compatible avec les éléments <audio> et <video> depuis Chrome 33. La compatibilité avec Opus dans ISO-BMFF (également appelé Opus dans MP4) a été ajoutée par la suite. Opus au format MP4 est désormais disponible dans Chrome 70 pour les extensions Media Source.

Voici comment détecter si Opus dans MP4 est compatible avec MSE :

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

Pour voir un exemple complet, consultez notre exemple officiel.

En raison du manque d'outils permettant de multiplexer Opus dans MP4 avec des valeurs de fin et de pré-saut correctes, si une telle précision est importante pour vous, vous devrez utiliser SourceBuffer.appendWindow{Start,End} et SourceBuffer.timestampOffset dans Chrome pour obtenir une lecture précise au niveau des échantillons.

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

Autoriser la lecture de contenu protégé par défaut sur Android

Dans Chrome 70 pour Android, la valeur par défaut du paramètre de site "Contenu protégé" passe de "Demander d'abord" à "Autorisé", ce qui réduit les frictions associées à la lecture de ce type de contenu multimédia. Ce changement est possible, en partie, grâce à des étapes supplémentaires qui permettent d'effacer les licences multimédias en même temps que les cookies et les données de site. Cela garantit que les licences multimédias ne sont pas utilisées par les sites pour suivre les utilisateurs qui ont effacé leurs données de navigation.

Paramètre de contenu protégé sur Android.
Figure 2. Paramètre de contenu protégé sur Android.