Веб-приложения уже могут использовать 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 .
Благодарности
Спасибо Рэйчел Эндрю за просмотр этого документа.