Javascript 使用网络摄像头捕获图像并使用画布保存
我创建了一个简单的HTML表单,其中的用户应该能够使用他的设备网络摄像头拍摄自己的照片。我在表单中使用了这段HTML:Javascript 使用网络摄像头捕获图像并使用画布保存,javascript,Javascript,我创建了一个简单的HTML表单,其中的用户应该能够使用他的设备网络摄像头拍摄自己的照片。我在表单中使用了这段HTML: <div class="form-group"> <div id="camera"> <div class="center clear"> <video id="video" class="picCapture" autoplay=""></video>
<div class="form-group">
<div id="camera">
<div class="center clear">
<video id="video" class="picCapture" autoplay=""></video>
<button id="snap" type="button" class="btn btn-default" onclick="return false;">Take Picture</button>
<canvas id="canvas" class="picCapture"></canvas>
</div>
</div>
</div>
在我当地的机器里,一切都正常。我可以在我的表格中看到网络摄像头的输出,并且能够保存图片。但是现在我把应用程序上传到了服务器上,我无法从网络摄像头中看到流。
我在控制台中进行了检查,并打印了这两个:
getUserMedia() is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins for more details.
catch-pic.js:28 Video capture error: undefined
我在catch pic.js中标记了第28行。我真的不明白为什么这台机器只在我的机器上工作,而在其他机器上却不工作……你知道吗?thx我发现这与您的代码相同:
<script>
// Put event listeners into place
window.addEventListener("DOMContentLoaded", function() {
// Grab elements, create settings, etc.
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);
};
// Put video listeners into place
if(navigator.getUserMedia) { // Standard
navigator.getUserMedia(videoObj, function(stream) {
video.src = stream;
video.play();
}, errBack);
} else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
navigator.webkitGetUserMedia(videoObj, function(stream){
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, errBack);
} else if(navigator.mozGetUserMedia) { // WebKit-prefixed
navigator.mozGetUserMedia(videoObj, function(stream){
video.src = window.URL.createObjectURL(stream);
video.play();
}, errBack);
}
// Trigger photo take
document.getElementById("snap").addEventListener("click", function() {
context.drawImage(video, 0, 0, 640, 480);
});
}, false);
</script>
//将事件侦听器放置到位
addEventListener(“DOMContentLoaded”,function()){
//抓取元素、创建设置等。
var canvas=document.getElementById(“canvas”),
context=canvas.getContext(“2d”),
video=document.getElementById(“视频”),
videoObj={“video”:true},
errBack=函数(错误){
日志(“视频捕获错误:”,错误代码);
};
//将视频侦听器放置到位
if(navigator.getUserMedia){//Standard
getUserMedia(videoObj,函数(流){
video.src=流;
video.play();
},errBack);
}else if(navigator.webkitGetUserMedia){//WebKit前缀
webkitGetUserMedia(videoObj,函数(流){
video.src=window.webkitURL.createObjectURL(流);
video.play();
},errBack);
}else if(navigator.mozzetusermedia){//WebKit前缀
mozGetUserMedia(videoObj,函数(流){
video.src=window.URL.createObjectURL(流);
video.play();
},errBack);
}
//触发拍照
document.getElementById(“snap”).addEventListener(“单击”,函数)(){
drawImage(视频,0,0,640,480);
});
},假);
并运行此thx。尚未测试,但我认为该方法仅在我尝试通过http时通过https工作
<script>
// Put event listeners into place
window.addEventListener("DOMContentLoaded", function() {
// Grab elements, create settings, etc.
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);
};
// Put video listeners into place
if(navigator.getUserMedia) { // Standard
navigator.getUserMedia(videoObj, function(stream) {
video.src = stream;
video.play();
}, errBack);
} else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
navigator.webkitGetUserMedia(videoObj, function(stream){
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, errBack);
} else if(navigator.mozGetUserMedia) { // WebKit-prefixed
navigator.mozGetUserMedia(videoObj, function(stream){
video.src = window.URL.createObjectURL(stream);
video.play();
}, errBack);
}
// Trigger photo take
document.getElementById("snap").addEventListener("click", function() {
context.drawImage(video, 0, 0, 640, 480);
});
}, false);
</script>