用Javascript打开网络摄像头

时间:2012-06-15 07:00:01

标签: javascript jquery webcam

我只是想知道如何在Js中打开webCam,但我不想要任何API或其他库的链接因为我总是自己制作代码但是找不到办法去。我只想要一两行代码来了解如何使用js打开网络摄像头,并想要一些描述如何工作,在哪个浏览器中工作。

4 个答案:

答案 0 :(得分:14)

我建议你使用像ScriptCam这样的第三方库,但是既然你声明要编写自己的代码,我会给出使用新用户媒体API的解释。

W3C工作草案HTML Media CapturegetUserMedia()一起推出。以下浏览器以实验方式支持它:

在Chrome 18或更高版本中,可以访问about:flags网站启用API。

Enabling the getUserMedia() in Chrome's about:flags page.

在Opera中,您必须下载其中一个实验Android or desktop builds


在HTML中,您需要使用video元素

<video id="basic-stream" class="videostream" autoplay=""></video>

首先,您需要设置权限:

navigator.getUserMedia({video: true, audio: true}, function(localMediaStream) {
  var video = document.querySelector('video');
  video.src = window.URL.createObjectURL(localMediaStream);

  // Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia.
  // See crbug.com/110938.
  video.onloadedmetadata = function(e) {
  // Ready to go. Do some stuff.
  };
}, onFailSoHard);

如果您想要在Chrome和Opera中运行的代码,请使用以下代码示例:

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;

var video = document.querySelector('video');

if (navigator.getUserMedia) {
  navigator.getUserMedia({audio: true, video: true}, function(stream) {
    if (navigator.webkitGetUserMedia) {
      video.src = window.webkitURL.createObjectURL(stream);
    } else {
      video.src = stream; // Opera
    }
  }, onFailSoHard);
} else {
  video.src = 'somevideo.webm'; // fallback.
}

可以使用以下方法检查API是否可用:

function hasGetUserMedia() {
   // Note: Opera builds are unprefixed.
   return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
        navigator.mozGetUserMedia || navigator.msGetUserMedia);
}

更多信息可在教程Capturing Audio & Video in HTML

中找到

语法问题可能来自供应商前缀,因此请注意它们。

答案 1 :(得分:2)

答案 2 :(得分:1)

需要Opera Mobile 12.如果添加webkit前缀,它也可以在Chrome 21中使用。

if(navigator.getUserMedia) {
  navigator.getUserMedia('video', successCallback, errorCallback);
}

请参阅the documentation

答案 3 :(得分:1)

这就是所谓的HTML5 Media Capture API。您会找到一些移动浏览器的示例代码here