Mike_G
Mike_G

Reputation: 16502

Firefox does not provide all surface display options for getDisplayMedia()

the spec says:

the user agent MUST still offer the user unlimited choice of any display surface.

https://www.w3.org/TR/screen-capture/#dom-mediadevices

But Firefox only offers "Window" or "Screen", and not the browser tab contents like Chrome/Edge. Am I missing something? Is there a way to capture only the tab?

Upvotes: 0

Views: 451

Answers (1)

François Beaufort
François Beaufort

Reputation: 5659

You're right. Firefox (and Safari 16) currently allows windows and screens only to be captured with getDisplayMedia(). Chrome allows window, screens, and tabs.

Note that you can detect afterwards which display surface type (tab, window, screen) the user picked thanks to the displaySurface track setting.

// Prompt the user to share a tab, a window or a screen.
const stream = await navigator.mediaDevices.getDisplayMedia();
const [track] = stream.getVideoTracks();
const displaySurface = track.getSettings().displaySurface;

if (displaySurface == "browser") {
  // User picked a tab.
} else if (displaySurface == "window") {
  // User picked a window.
} else if (displaySurface == "monitor") {
  // User picked a screen.
}

Upvotes: 1

Related Questions