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.