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 le contenu audio lu dans un onglet doit être lu par les enceintes locales 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 les collègues se retrouvent dans une salle pour que l'un d'entre eux effectue une présentation depuis son ordinateur portable vers une solution de conférence en salle équipée d'un écran et de 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
vous fait gagner du temps ici. Si ce paramètre est défini sur true
, il indique que le navigateur doit arrêter de transmettre l'audio aux enceintes locales lorsque la capture commence. 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()
.
Consultez le bug 1381959.
Remerciements
Merci à Rachel Andrew d'avoir examiné ce document.