API захвата экрана
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
API захвата экрана добавляет возможности к существующему API захвата медиа и потоков, позволяя пользователю выбрать экран или часть экрана (например, окно) для захвата в виде медиапотока. Этот поток затем может быть записан или передан другим по сети.
Концепции и использование API захвата экрана
API захвата экрана относительно прост в использовании. Его единственный метод — MediaDevices.getDisplayMedia(), задача которого — попросить пользователя выбрать экран или часть экрана для захвата в виде MediaStream.
Для начала захвата видео с экрана вызывается getDisplayMedia() на navigator.mediaDevices:
captureStream = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
Возвращаемое getDisplayMedia() Promise разрешается в MediaStream, который транслирует захваченное медиа.
Для более глубокого изучения использования API для захвата содержимого экрана в виде потока ознакомьтесь со статьёй Использование API захвата экрана.
Интерфейсы
CaptureController-
Предоставляет методы для дальнейшей обработки сессии захвата независимо от её инициирования с помощью
MediaDevices.getDisplayMedia(). ОбъектCaptureControllerассоциируется с сессией захвата путём передачи его в вызовgetDisplayMedia()в качестве значения свойстваcontrollerобъекта опций.
Добавления к интерфейсу MediaDevices
MediaDevices.getDisplayMedia()-
Метод
getDisplayMedia()добавлен к интерфейсуMediaDevices. АналогичноgetUserMedia(), этот метод создаёт промис, который разрешается вMediaStream, содержащий область экрана, выбранную пользователем, в формате, соответствующем заданным опциям.
Добавления к существующим словарям
API захвата экрана добавляет свойства к следующим словарям, определённым другими спецификациями.
MediaTrackConstraints
MediaTrackConstraints.displaySurface-
Значение
ConstrainDOMString, указывающее на тип поверхности отображения для захвата. Значение — одно изbrowser,monitor, илиwindow. MediaTrackConstraints.logicalSurface-
Указывает, представляет ли видео в потоке логическую поверхность отображения (то есть такую, которая может быть не полностью видна на экране или может быть полностью вне экрана). Значение
trueуказывает, что должна быть захвачена логическая поверхность отображения. MediaTrackConstraints.suppressLocalAudioPlayback-
Управляет тем, будет ли аудио, воспроизводимое в вкладке, продолжаться через локальные динамики пользователя при захвате вкладки, или будет подавлено. Значение
trueуказывает на то, что оно будет подавлено.
MediaTrackSettings
MediaTrackSettings.cursor-
Строка, указывающая, включает ли захватываемая в данный момент поверхность отображения курсор мыши, и если да, то виден ли он только во время движения мыши или всегда. Значение — одно из
always,motion, илиnever. MediaTrackSettings.displaySurface-
Строка, указывающая тип поверхности отображения, который в данный момент захватывается. Значение — одно из
browser,monitor, илиwindow. MediaTrackSettings.logicalSurface-
Булево значение, которое равно
trueесли захватываемое видео не соответствует напрямую отдельной области отображения на экране. MediaTrackSettings.suppressLocalAudioPlayback-
Булево значение, которое равно
trueесли захватываемое аудио не воспроизводится через локальные динамики пользователя.
MediaTrackSupportedConstraints
MediaTrackSupportedConstraints.displaySurface-
Булево значение, которое равно
trueесли текущая среда поддерживает ограничениеMediaTrackConstraints.displaySurface. MediaTrackSupportedConstraints.logicalSurface-
Булево значение, которое равно
trueесли текущая среда поддерживает ограничениеMediaTrackConstraints.logicalSurface. MediaTrackSupportedConstraints.suppressLocalAudioPlayback-
Булево значение, которое равно
trueесли текущая среда поддерживает ограничениеMediaTrackConstraints.suppressLocalAudioPlayback.
Проверка политики разрешений
Пользовательские агенты, поддерживающие Политику разрешений (либо с помощью HTTP-заголовка Permissions-Policy или атрибута <iframe> allow) могут указать желание использовать API захвата экрана с помощью директивы display-capture:
<iframe allow="display-capture" src="/some-other-document.html">…</iframe>
Список разрешенных по умолчанию — self, что позволяет любому контенту в той же области использовать API захвата экрана.
Спецификации
| Спецификация |
|---|
| Захват экрана # dom-mediadevices-getdisplaymedia |
Совместимость с браузерами
| Рабочий стол | Мобильный телефон | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
Screen_Capture_API |
72 | 7917–79Доступен в качестве членаNavigator вместо MediaDevices. |
6633–66Начиная с Firefox 33, вы можете захватывать данные экрана, используяgetUserMedia(), с ограничением video под названием mediaSource. До версии 52 использовался настраиваемый клиентом список разрешенных сайтов. |
60 | 13 | НетВ Chrome Android с 72 по 88 этот метод был доступен, но всегда завершался ошибкойNotAllowedError. См. баг 40418135. |
НетВ Firefox Android с 66 по 79 этот метод был доступен, но всегда завершался ошибкойNotAllowedError. |
НетВ Opera Android с 51 по 88 этот метод был доступен, но всегда завершался ошибкойNotAllowedError. См. баг 40418135. |
Нет | НетВ Samsung Internet с 11.0 по 88 этот метод был доступен, но всегда завершался ошибкойNotAllowedError. См. баг 40418135. |
НетВ WebView Android с 72 по 88 этот метод был доступен, но всегда завершался ошибкойNotAllowedError. См. баг 40418135. |
audio_capture_support |
74В Windows и ChromeOS можно захватить весь системный звук при совместном использовании целого экрана. В Linux и macOS можно захватить только звук вкладки. |
79В Windows и ChromeOS можно захватить весь системный звук при совместном использовании целого экрана. В Linux и macOS можно захватить только звук вкладки. |
Нет | 62В Windows и ChromeOS можно захватить весь системный звук при совместном использовании целого экрана. В Linux и macOS можно захватить только звук вкладки. |
Нет | Нет | Нет | Нет | Нет | Нет | Нет |
controller_option |
109 | 109 | Нет | 95 | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
monitorTypeSurfaces_option |
119Значение по умолчанию =include |
119Значение по умолчанию =include |
Нет | 105Значение по умолчанию =include |
Нет | Нет | Нет | Нет | Нет | Нет | Нет |
systemAudio_option |
105Значение по умолчанию =include |
105Значение по умолчанию =include |
Нет | 91Значение по умолчанию =include |
Нет | Нет | Нет | Нет | Нет | Нет | Нет |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Screen_Capture_API