ImageCapture API在takePhoto()上抛出平台错误

时间:2018-11-19 14:38:03

标签: javascript navigator image-capture mediastream

我正在尝试使用ImageCapture API通过4k Logitech Brio Stream网络摄像头捕获快照。

在Mac的内置摄像头上,或者在网络摄像头上使用默认视频限制条件下,所有方法都可以很好地工作,尽管尝试以较高的分辨率platform error捕获更高的分辨率会失败。我发现的唯一引用来自源代码herehere

这些链接分别建议capabilities.is_null()photo_state.is_null(),尽管我一直无法找到可能导致这两个原因的原因。

这是我的(略作精简的)实现:

// N.B. self is scoped within the code file, and works as it should

const videoConstraints = {
  video: {
    width: { min: 1280, ideal: 3840, max: 3840 },
    height: { min: 720, ideal: 2160, max: 2160 }
  }
}

navigator.mediaDevices.getUserMedia(videoConstraints)         
  .then(function(stream) {
    self.imageCapture = new ImageCapture(stream.getVideoTracks()[0]);
  })


self.imageCapture.takePhoto()
  .then(function(blob) { self.doSomethingWithThe(blob); }) // never gets here because...
  .catch(function(e) { console.log(e); }); // here the error is thrown

这与内置凸轮配合使用,同时将视频限制切换为{ video: true }可以使该网络摄像头正常使用,尽管分辨率较低720 x 1280(指定的最小值)。为此,没有自定义的高分辨率。

使用Chrome作为浏览器。

有人知道如何让takePhoto()来捕捉4k图像吗?

我发现很少描述API的问题,因此欢迎提出任何建议或帮助。让我知道问题中是否缺少任何细节。预先感谢。

0 个答案:

没有答案