HTML5 Game - Draw video frame via timer and canvas

Introduction

We can use canvas to draw a video.

Demo

ResultView the demo in separate window

<!DOCTYPE HTML>
<html>
    <head>
        <title>Example</title>
        <style>
            canvas {border: thin solid black}
            body > * {float:left;}
        </style>
    </head>
    <body>
        <video id="vid" hidden src="myVideo.webm" preload="auto" 
            width="360" height="240" autoplay></video>
        <canvas id="canvas" width="360" height="240">
            Your browser doesn't support the <code>canvas</code> element
        </canvas>
        <script>
            let ctx = document.getElementById("canvas").getContext("2d");
            let imageElement = document.getElementById("vid");
            // ww w  .ja v a2  s .c o m
            let width = 100;
            let height = 10;
            ctx.lineWidth = 5;
            ctx.strokeStyle = "red";
            
            setInterval(function() {
                ctx.drawImage(imageElement, 0, 0, 360, 240);
                ctx.strokeRect(180 - (width/2),120 - (height/2), width, height);
            }, 25);
            
            setInterval(function() {
                width = (width + 1) % 200;
                height = (height + 3) % 200;
            }, 100);
        
        </script>
    </body>
</html>

In this example, there is a hidden video element.

The first timer fires every 25 milliseconds and draws the current video frame and then a stroked rectangle.

The second timer fires every 100 milliseconds and changes the values used for the rectangle.

The rectangle changes size and is superimposed over the video image.

Related Topic