Bug reporter: Alternatives to getDisplayMedia?

As you've noticed, Chrome and Firefox currently implement an outdated unofficial draft. The bug tracker for getDisplayMedia in Firefox is here.

If it helps, you no longer need an extension in Firefox, but you do need to use https (so you must open this page in https first):

var constraints = {video: {mediaSource: "screen", width: 320, height: 200}};

navigator.mediaDevices.getUserMedia(constraints)
  .then(stream => video.srcObject = stream)
  .catch(e => console.log(e.message));
<video id="video" height="240" width="320" autoplay></video>

However, please be aware of unique security risks of sharing your screen with a browser window on it.

You have to develop an extension (at least on chrome) using https://developer.chrome.com/extensions/desktopCapture APIs. As this poses a security concern, its not available without an extension. There is a talk to add this in next version of webrtc spec (https://w3c.github.io/mediacapture-screen-share/). You may want to keep an eye on it and track the progress.

There are older versions of the API currently implemented. See this module which includes example extensions for Chrome and Firefox (note: Firefox will soon no longer require an extension for whitelisting)

getDisplayMedia() has now been rolled out in Edge 17 and 18 and it is under a flag in Chrome 70

The code required to capture the screen is as follows:

navigator.getDisplayMedia({ video: true }).then(stream => {
    console.log("Awesome");
}, error => {
    console.log("Unable to acquire screen capture", error);
});

Chrome will ask whether you want to share your screen, an app window or a Chrome tab: enter image description here