Улучшения совместного использования экрана в Chrome 109

Франсуа Бофор
François Beaufort

Веб-приложения уже могут использовать getDisplayMedia() для захвата вкладок, окон или экранов в виде MediaStream . Начиная с Chrome 109, вы можете воспользоваться следующими улучшениями:

  • Когда начинается общий доступ к экрану, условный фокус позволяет веб-приложению захвата контролировать, фокусируется ли браузер на захваченной вкладке или окне или остается ли вкладка захвата активной.
  • Параметр suppressLocalAudioPlayback определяет, будет ли звук, воспроизводимый на вкладке, воспроизводиться через локальные динамики пользователя.

Условный фокус

Используя условный фокус, веб-приложения теперь могут контролировать, будет ли захваченная вкладка или окно фокусироваться при запуске захвата или же страница захвата должна оставаться в фокусе.

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

Дополнительную информацию см. в разделе «Улучшенное совместное использование экрана с помощью условного фокуса» .

Подавить локальное воспроизведение звука

Коллеги обычно собираются в одной комнате, чтобы один из них мог провести презентацию со своего ноутбука в конференц-зале с выделенным монитором и динамиками. Ведущий обычно выключает звук на своем ноутбуке и использует внешние динамики, которые часто громче; это также обеспечивает синхронизацию звука с видео. Ограничение звука suppressLocalAudioPlayback экономит здесь время. Если установлено значение true , браузер должен прекратить ретрансляцию звука на локальные динамики при начале захвата. Значение по умолчанию для этого ограничения — 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

На момент написания этой статьи suppressLocalAudioPlayback еще не работал с applyConstraints() . См. ошибку 1381959 .

Благодарности

Изображение героя Бретта Джордана .

Спасибо Рэйчел Эндрю за рецензирование этой статьи.