Melhorias no compartilhamento de tela no Chrome 109

François Beaufort
François Beaufort

Os apps da Web já podem usar getDisplayMedia() para capturar guias, janelas ou telas como uma MediaStream. No Chrome 109, você pode aproveitar as seguintes melhorias:

  • Quando o compartilhamento de tela é iniciado, o Foco condicional permite que o app da Web de captura controle se o navegador foca a guia ou janela capturada ou se a guia de captura permanece ativa.
  • A opção suppressLocalAudioPlayback controla se o áudio reproduzido em uma guia será tocado nos alto-falantes locais do usuário.

Foco condicional

Com o foco condicional, os apps da Web agora podem controlar se a guia ou janela capturada vai ser focada quando a captura começar ou se a página de captura vai permanecer em foco.

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");
}

Confira Melhor compartilhamento de tela com o foco condicional para mais informações.

Suprimir a reprodução de áudio local

É comum que colegas se reúnam em uma sala para que um deles apresente algo do laptop para uma solução de conferências na sala com um monitor e alto-falantes dedicados. O apresentador geralmente silencia o próprio laptop e usa alto-falantes externos, que geralmente são mais altos. Isso também garante que o áudio esteja sincronizado com o vídeo. A restrição de áudio suppressLocalAudioPlayback economiza tempo aqui. Quando definido como true, isso indica que o navegador deve parar de redirecionar o áudio para os alto-falantes locais quando a captura for iniciada. O valor padrão dessa restrição é 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

No momento da escrita, o suppressLocalAudioPlayback não funciona com applyConstraints(). Consulte o bug 1381959.

Agradecimentos

Agradecemos a Rachel Andrew por revisar este documento.