Le app web possono già utilizzare getDisplayMedia()
per acquisire schede, finestre o schermate come MediaStream. A partire da Chrome 109, puoi sfruttare i seguenti miglioramenti:
- Quando viene avviata la condivisione dello schermo, la funzionalità Messa a fuoco condizionale consente all'app web di acquisizione di controllare se il browser incentra la scheda o la finestra acquisita o se la scheda di acquisizione rimane attiva.
- L'opzione
suppressLocalAudioPlayback
consente di controllare se l'audio riprodotto in una scheda viene riprodotto dagli altoparlanti locali dell'utente.
Concentrazione condizionale
Grazie a Messa a fuoco condizionale, le app web ora possono controllare se impostare lo stato attivo sulla scheda o sulla finestra acquisita all'inizio dell'acquisizione o se la pagina di acquisizione deve rimanere attiva.
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");
}
Per saperne di più, consulta l'articolo Condivisione schermo migliore con messa a fuoco condizionale.
Elimina riproduzione audio locale
È normale che i colleghi si riuniscano in una sala per fare in modo che uno di loro presenti dal laptop una soluzione per conferenze in sala dotata di monitor e altoparlanti dedicati. Il presentatore in genere disattiva l'audio del proprio laptop e utilizza altoparlanti esterni, che sono spesso più potenti; ciò garantisce inoltre che l'audio sia sincronizzato con il video. Il vincolo audio suppressLocalAudioPlayback
consente di risparmiare tempo in questo caso. Se impostato su true
, significa che il browser non deve più trasmettere l'audio agli altoparlanti locali all'avvio dell'acquisizione. Il valore predefinito di questo vincolo è 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
Al momento della scrittura, suppressLocalAudioPlayback
non funziona ancora con applyConstraints()
. Vedi Bug 1381959.
Ringraziamenti
Immagine promozionale di Brett Jordan.
Grazie a Rachel Andrew per aver letto questo articolo.