getUserMedia Example

by dirkk0

HTML

<article>
    <video id="video" width="320" height="200" autoplay></video>
    <section>
        <button id="btnStart">Start video</button>
        <button id="btnStop">Stop video</button>
        <button id="btnPhoto">Take a photo</button>
    </section>
    <canvas id="canvas" width="320" height="240"></canvas>
</article>

CSS

body {
    font-family:"Verdana";
    font-size: 9pt;
}
header {
    padding: 15px;
    box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);
    background-color: rgb(27, 161, 226);
    color: #fff;
}
header h1 {
    font-size: 14pt;
}
article {
    width: 80%;
    margin: auto;
    margin-top: 20px;
}

JavaScript

window.onload = function () {

    //Compatibility
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;

    var canvas = document.getElementById("canvas"),
        context = canvas.getContext("2d"),
        video = document.getElementById("video"),
        btnStart = document.getElementById("btnStart"),
        btnStop = document.getElementById("btnStop"),
        btnPhoto = document.getElementById("btnPhoto"),
        videoObj = {
            video: true,
            audio: true
        };

    btnStart.addEventListener("click", function () {
        var localMediaStream;

        if (navigator.getUserMedia) {
            navigator.getUserMedia(videoObj, function (stream) {
                video.src = (navigator.webkitGetUserMedia) ? window.webkitURL.createObjectURL(stream) : stream;
                localMediaStream = stream;

            }, function (error) {
                console.error("Video capture error: ", error.code);
            });

            btnStop.addEventListener("click", function () {
                localMediaStream.stop();
            });

            btnPhoto.addEventListener("click", function () {
                context.drawImage(video, 0, 0, 320, 240);

            });
        }
    });
};