getUserMedia锁定焦点/曝光

时间:2015-03-29 01:12:37

标签: javascript canvas camera html5-video getusermedia

我使用navigator.getUserMedia限制来访问用户的网络摄像头,使用Feed作为HTML <video>的来源,然后将其流复制到drawImage <canvas>上下文。我正在做这一切,所以我可以定期拍摄快照。

我想要做的是,一旦页面开始拍摄快照,锁定getUserMedia相机的焦点/曝光,这样在快照间隔之间环境可以改变,而不会改变光平衡或相机重新聚焦。

有没有人知道JS方面是否可以这样做?

2 个答案:

答案 0 :(得分:1)

与以下内容重复出现:Take photo when the camera is automatically focused

正确-尽管这里可能是不好的做法-我将链接到为什么MediaCapture可能比预期的模糊或粗糙:

为什么iPad / iOS上的本机摄像头分辨率-vs- getUserMedia有区别?

简而言之:MediaCapture对媒体源进行了大量转换,可能会导致图像模糊或颗粒感。

要解决此问题,请使用ImageCapture:

  

ImageCapture API可以控制相机功能,例如   变焦,亮度,对比度,ISO和白平衡。最重要的是,图像   Capture使您可以访问任何设备的全分辨率功能   可用的设备摄像头或网络摄像头。以前的服用方法   网络上的照片使用的视频快照较低   分辨率高于静止图像。

要解决您的问题,

您可以通过UX和缩放滑块解决此问题。以下是有关如何使用ImageCapture(静态图像)实现此目的的信息。 MediaCapture(视频供稿)不允许使用此功能。您可以使用MediaCapture并具有“手动模式”之类的按钮,并允许用户选择正确的缩放比例来拍摄照片。

您还可以通过使更新循环“每次更新”执行n次ImageCaptures并具有缩放滑块来“模拟”摄像机。

https://developers.google.com/web/updates/2016/12/imagecapture

以下是有关如何使用它/ polyfill的示例:https://github.com/GoogleChromeLabs/imagecapture-polyfill

确保您使用可处理跨平台支持的最新getUserMedia polyfill:https://www.npmjs.com/package/webrtc-adapter

希望这会有所帮助

答案 1 :(得分:0)

前段时间我们遇到了同样的问题。它只发生在某些设备上......但即使是同一品牌的设备也有不同的行为。浏览器/操作系统版本/驱动程序组合中的某些内容被破坏了。在某些设备中,焦点被锁定,而其他设备则没有。我们查看了所有API,我们在初始化代码中尝试了几十种变体,但最后我们得出结论,没有明显的解决方案。

我们添加了一个按钮来重新启动所有以便以某种方式缓解问题...