HTML5调用摄像头实例

HTML布局:

   该布局比较简陋,video标签主要是用来实时显示摄像头画面的,canvas则是点击拍照后显示的某一瞬间的画面

<body>
	<video id="video" width="640" height="480" autoplay></video><br>
	<button id="snap" >拍照</button>  <br>
	<canvas id="canvas" width="640" height="480"></canvas>  
</body>

js实现:

<script type="text/javascript">	
        //为window对象扩展addEventListener方法
	window.addEventListener("DOMContentLoaded", function() {  
	    var canvas = document.getElementById("canvas"),  
	        context = canvas.getContext("2d"),  
	        video = document.getElementById("video"),  
	        videoObj = { "video": true },  
	        errBack = function(error) {  
	            console.log("Video capture error: ", error.code);   
	        };  
		  
	    // 解决兼容性问题 
	    if(navigator.getUserMedia) { // edge,IE  
	    	//alert("支持navigator.getUserMedia");
	        navigator.getUserMedia(videoObj, function(stream) {  
	            video.src = stream;  
	            video.play();  
	        }, errBack);  
	    } else if(navigator.webkitGetUserMedia) { // chrome 
	    	//alert("支持navigator.webkitGetUserMedia");
	        navigator.webkitGetUserMedia(videoObj, function(stream){  
	            video.src = window.webkitURL.createObjectURL(stream);  
	            video.play();  
	        }, errBack);  
	    }  
	    else if(navigator.mozGetUserMedia) { // Firefox 
	    	//alert("支持navigator.mozGetUserMedia");
	        navigator.mozGetUserMedia(videoObj, function(stream){  
	            video.src = window.URL.createObjectURL(stream);  
	            video.play();  
	        }, errBack);  
	    }  
	    // 触发拍照动作  
	    document.getElementById("snap").addEventListener("click", function() {  
		 context.drawImage(video, 0, 0, 640, 480);  
	    }); 

	}, false);   
</script>

注意事项:不同浏览器下正确打开方式

    1.谷歌浏览器下直接打开文件绝对地址无法实现调用摄像头,要放在apache服务器文件中才能打开(windows 下安装wampserver)?

    2.火狐浏览器可以直接打开,也可以在apache下打开

    3.win10的edge浏览器不管是直接打开还是在apache下都无法调用摄像头,会出现闪退的情况

    4.最后惊喜的发现chrome和firefox所得的图片都是反的!!!

转载于:https://my.oschina.net/lgr6/blog/653005

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值