The Screen Capture API introduces additions to the existing Media Capture and Streams API to let the user select a screen or portion of a screen (such as a window) to capture as a media stream. This stream can then be recorded or shared with others over the network.
The Screen Capture API is relatively simple to use. Its sole method is MediaDevices.getDisplayMedia()
, whose job is to ask the user to select a screen or portion of a screen to capture in the form of a MediaStream
.
To start capturing video from the screen, you call getDisplayMedia()
on navigator.mediaDevices
:
captureStream =
await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
The Promise
returned by getDisplayMedia()
resolves to a MediaStream
which streams the captured media.
See the article Using the Screen Capture API for a more in-depth look at how to use the API to capture screen contents as a stream.
The Screen Capture API adds properties to the following dictionaries defined by other specifications.
User agents that support Permissions Policy (either using the HTTP Permissions-Policy
header or the <iframe>
attribute allow
) can specify a desire to use the Screen Capture API using the directive display-capture
:
<iframe allow="display-capture" src="/some-other-document.html">…</iframe>
The default allowlist is self
, which lets any content within the same origin use Screen Capture.