<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Snapshot Application</title>
  <style>
    section {
      float: left;
      width: 320px;
      height: 240px;
      border: 1px solid #000000;
    }
  </style>
  <script>
    let video, canvas;
    async function initiate() {
      try {
        let stream = await navigator.mediaDevices.getUserMedia({video: true});
        let element = document.getElementById("canvas");
        canvas = element.getContext("2d");
        let player = document.getElementById("player");
        player.addEventListener("click", snapshot);

        video = document.getElementById("media");
        video.srcObject = stream;
        video.play();
      } catch (error) {
        console.log("Error: " + error.name);
      }
    }
    function snapshot() {
      canvas.drawImage(video, 0, 0, 320, 240);
    }
    window.addEventListener("DOMContentLoaded", initiate);
  </script>
</head>
<body>
  <section id="player">
    <video id="media" width="320" height="240"></video>
  </section>
  <section>
    <canvas id="canvas" width="320" height="240"></canvas>
  </section>
</body>
</html>