Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用网络摄像头捕获图像并使用画布保存_Javascript - Fatal编程技术网

Javascript 使用网络摄像头捕获图像并使用画布保存

Javascript 使用网络摄像头捕获图像并使用画布保存,javascript,Javascript,我创建了一个简单的HTML表单,其中的用户应该能够使用他的设备网络摄像头拍摄自己的照片。我在表单中使用了这段HTML: <div class="form-group"> <div id="camera"> <div class="center clear"> <video id="video" class="picCapture" autoplay=""></video>

我创建了一个简单的HTML表单,其中的用户应该能够使用他的设备网络摄像头拍摄自己的照片。我在表单中使用了这段HTML:

<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>