getUserMedia API
by Thanos Saringelos
HTML
<!DOCTYPE html>
<html>
<head>
<title>getUserMedia</title>
</head>
<body>
<header>
<h1>getUserMedia</h1>
</header>
<article>
<video id="video" 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>
<canvas id="canvas2" width="320" height="240"></canvas>
</article>
</body>
</html>
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);
});
}
});
window.requestAnimationFrame = (function () {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
var canvas2 = document.getElementById('canvas2');
canvas2.width = 480;
canvas2.height = 300;
render();
// merges the media elements
function render() {
canvas.getContext('2d').drawImage(video,0,0, 320,240 );
canvas2.getContext('2d').drawImage(canvas, 0, 0 ,640,480);
requestAnimationFrame(render);
}
};