GUM Detect Video – WebRTC Get UserMedia


<!DOCTYPE html>
<video id=”videoautoplay>
<source type=”video/webmsrc=”http://miketaylr.com/misc/dontstop.webm>
//real demo should have real source elements
//for all your favorite codec flavors
</video>
<script>
//normalize window.URL
window.URL || (window.URL = window.webkitURL || window.msURL || window.oURL);
//normalize navigator.getUserMedia
navigator.getUserMedia || (navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);
//detect if {video: true} or “video” style options
//by creating an iframe and blowing it up
//style jacked from @kangax
var optionStyle = (function(win){
//only test if there’s something to test
if (!navigator.getUserMedia) return;
var el = document.createElement(‘iframe’),
root = document.body || document.documentElement,
string = true, object = true, nop = function(){};
root.appendChild(el);
var f = win.frames[win.frames.length1];
f.navigator.getUserMedia || (f.navigator.getUserMedia = f.navigator.webkitGetUserMedia || f.navigator.mozGetuserMedia || f.navigator.msGetUserMedia);
try { //try it with spec syntax
f.navigator.getUserMedia({video: true}, nop);
} catch (e) {
object = false;
try { //try it with old spec string syntax
f.navigator.getUserMedia(“video”, nop);
} catch (e) { //neither is supported
string = false;
}
} finally { //clean up
root.removeChild(el);
el = null;
}
return {string: string, object: object}
})(window),
//normalize the options object to a string
//if that’s the only thing supported
norm = function(opts){ // has to be {video: false, audio: true}. caveat emptor.
var stringOptions = [];
if (optionStyle.string && !optionStyle.object) {
//pluck the “true”s
for (var o in opts) {
if (opts[o] == true) {
stringOptions.push(o);
}
}
return stringOptions.join(” “);
} else {
//really, this will blow up if you pass it {video: true, rofl: “copter”}. so don’t.
return opts;
}
},
hollaback = function(stream) {
video.src = (window.URL && window.URL.createObjectURL) ? window.URL.createObjectURL(stream) : stream;
},
errback = function() {
//doSomethingUsefulHere()
},
video = document.getElementById(‘video’);
if (navigator.getUserMedia) {
navigator.getUserMedia(norm({video: true, audio: true}), hollaback, errback);
}
</script>

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s