javascript网络摄像头无法在浏览器中工作

时间:2016-05-04 23:31:12

标签: javascript

我有一个网络摄像头脚本,但它似乎没有工作我也没有得到任何控制台错误可以有人请帮助我看看我做错了什么

Photo.js

    (function(){
    var video = document.getElementById('video'),
                    vendorURL = window.URL || window.webkitURL;

 navigator.getMedia = navigator.getUserMedia ||
                                                                                                                                  navigator.WebKitGetUserMedia||
                                                                                                                    navigator.msGetUserMedia;

                        navigator.getMedia({
                            video:true,
                            audio:false
                        }, function(stream) {
                            video.src = vendorURL.createObjectURL(stream);
                            video.play();
                        }, function(error) {
                            //an error occured
                            //error.code
                        });

    });

的index.html

<div class="booth">
     <video id="video" width="400" height="300"></video>
   </div><!-- end booth -->

这是一个小提琴Fiddle

本教程是从中获取的脚本 https://youtu.be/gA_HJMd7uvQ?t=456

2 个答案:

答案 0 :(得分:2)

问题javascript处有两个问题。 1)实际上没有调用IIFE;您可以通过在关闭括号()之前包括左括号)来调用立即调用的函数表达式{2} wk处的navigator.WebKitGetUserMedia应为小写字符navigator.webkitGetUserMedia

(function() {
  var video = document.getElementById('video'),
    vendorURL = window.URL || window.webkitURL;

  navigator.getMedia = navigator.getUserMedia ||
    navigator.webkitGetUserMedia || /* substituted `w` for `W`, `k` for `K` */
    navigator.msGetUserMedia;

  navigator.getMedia({
    video: true,
    audio: false
  }, function(stream) {
    video.src = vendorURL.createObjectURL(stream);
    video.play();
  }, function(error) {
    console.log(error)
    //an error occured
    //error.code
  });   
}()); // added `()` before closing `)`

jsfiddle https://fiddle.jshell.net/heLs62sg/1/

答案 1 :(得分:0)

看起来你已经把这个代码包装在一个不会运行的闭包中,除非你从某个地方专门调用它。

(function(){
    // Code will not execute automatically
});

请注意以下示例中最后一行的额外括号:

(function(){
    // Code will execute automatically
})();

或者,您可以将代码分配给变量并手动调用它,例如:

var func = (function(){
    // Some Code in here
});

func();

我怀疑这是您问题的根本原因,但我无法确定您的网络摄像头代码是否有效,但这应该是朝着正确方向迈出的一步。