javascriptwebrtcget-display-media

How does Google Meet allow you to screen share from another tab?


In Google Meet, if you click "Present Now" then "A Chrome Tab", it brings up a window that lets you share from another tab. This is different to the standard Screen Capture API as if you simply run

navigator.mediaDevices.getDisplayMedia({
    video: true,
    audio: true,
})

you get a window where you can choose between sharing your whole screen, sharing a window, or sharing a tab. I would like to limit this to tab only. I have tried applying constraints like:

video: { displaySurface: 'browser' }

or

video: { displaySurface: { exact: 'browser' } }

however, the specs say that this doesn't work and indeed it doesn't. But if that's the case, then how does Google Meet do it?


Solution

  • Google Meet uses the older extension API for screensharing. This API allows restricting the source types. It is still available but requires an extension (Google meet delivers a preinstalled extensions).

    The standard getDisplayMedia does not allow restricting the types of displaySurface.

    Update 2022: as on Chrome 107 some of these options are available via getDisplayMedia too, see this blog post for details