我正在尝试使用ImageCapture API通过4k Logitech Brio Stream网络摄像头捕获快照。
在Mac的内置摄像头上,或者在网络摄像头上使用默认视频限制条件下,所有方法都可以很好地工作,尽管尝试以较高的分辨率platform error
捕获更高的分辨率会失败。我发现的唯一引用来自源代码here和here。
这些链接分别建议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的问题,因此欢迎提出任何建议或帮助。让我知道问题中是否缺少任何细节。预先感谢。