Screen capture

html JavaScript
<video id="video" height="400" autoplay></video>
<button id="toggle">toggle</button>
<script>
  (async () => {
    let capture = false;
    const videoElem = document.querySelector("#video");

    async function toggleCapture(event) {
      if (capture) {
        videoElem.srcObject.getTracks().forEach((track) => track.stop());
        videoElem.srcObject = null;
        capture = false;
      } else {
        try {
          let captureStream = await navigator.mediaDevices.getDisplayMedia({
            video: {
              cursor: "none",
            },
            audio: true,
          });

          videoElem.srcObject = captureStream;

          // Dump debug
          for (const track of videoElem.srcObject.getVideoTracks()) {
            console.info("Track");
            console.info(track);
            console.info("Track settings:");
            console.info(JSON.stringify(track.getSettings(), null, 2));
            console.info("Track constraints:");
            console.info(JSON.stringify(track.getConstraints(), null, 2));
          }
        } catch (err) {
          console.error("Error: " + err);
        }
        capture = true;
      }
    }
    document
      .querySelector("#toggle")
      .addEventListener("click", toggleCapture, false);
  })();
</script>