Améliorations apportées au partage d'écran dans Chrome 109

François Beaufort
François Beaufort

Les applications Web peuvent déjà utiliser getDisplayMedia() pour capturer des onglets, des fenêtres ou des écrans en tant que MediaStream. À partir de Chrome 109, vous pouvez profiter des améliorations suivantes:

  • Lorsque le partage d'écran commence, la fonctionnalité Focus conditionnel permet à l'application Web de capture de contrôler si le navigateur met en surbrillance l'onglet ou la fenêtre capturés, ou si l'onglet de capture reste actif.
  • L'option suppressLocalAudioPlayback détermine si l'audio lu dans un onglet est diffusé via les haut-parleurs locaux de l'utilisateur.

Mise au point conditionnelle

Grâce au focus conditionnel, les applications Web peuvent désormais contrôler si l'onglet ou la fenêtre capturés seront actifs au début de la capture, ou si la page de capture doit rester active.

const controller = new CaptureController();
// Prompt the user to share a tab, a window or a screen.
const stream =
    await navigator.mediaDevices.getDisplayMedia({ controller });

const [track] = stream.getVideoTracks();
const displaySurface = track.getSettings().displaySurface;
if (displaySurface === "browser") {
  // Focus the captured tab.
  controller.setFocusBehavior("focus-captured-surface");
} else if (displaySurface === "window") {
  // Do not move focus to the captured window.
  // Keep the capturing page focused.
  controller.setFocusBehavior("no-focus-change");
}

Pour en savoir plus, consultez Mieux partager l'écran avec la mise au point conditionnelle.

Supprimer la lecture audio locale

Il est courant que des collègues se réunissent dans une salle pour qu'un d'entre eux présente son contenu depuis son ordinateur portable sur une solution de visioconférence dans la salle avec un écran et des haut-parleurs dédiés. Le présentateur coupe généralement le son de son propre ordinateur portable et utilise les haut-parleurs externes, qui sont souvent plus puissants. Cela permet également de synchroniser l'audio avec la vidéo. La contrainte audio suppressLocalAudioPlayback permet de gagner du temps. Lorsque cette valeur est définie sur true, le navigateur doit arrêter de transmettre l'audio aux haut-parleurs locaux au début de la capture. La valeur par défaut de cette contrainte est false.

// Prompt the user to share a tab, a window or a screen with audio.
// If successful, stop the captured audio from being played out over
// the local device's speakers.
const stream = await navigator.mediaDevices.getDisplayMedia({
  audio: { suppressLocalAudioPlayback: true },
});
const [audioTrack] = stream.getAudioTracks();
const settings = audioTrack.getSettings();
console.log(settings.suppressLocalAudioPlayback); // true

Au moment de la rédaction de cet article, suppressLocalAudioPlayback ne fonctionne pas avec applyConstraints(). Voir le bug 1381959.

Remerciements

Merci à Rachel Andrew d'avoir examiné ce document.