getUserMedia锁定焦点/曝光

getUserMedia lock focus/exposure

本文关键字:曝光 焦点 锁定 getUserMedia      更新时间:2023-09-26

我使用带约束的navigator.getUserMedia访问用户的网络摄像头,使用提要作为HTML <video>的源,然后将其流复制到drawImage <canvas>上下文。我这么做是为了每隔一段时间拍一张快照。

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

有人知道这在JS方面是否可行吗?

标记为的副本:当相机自动对焦时拍照

首先——尽管这里可能是糟糕的做法——我将链接到为什么MediaCapture可能比预期的模糊或颗粒状:

为什么iPad/iOS上的原生相机分辨率与getUserMedia有差异?

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

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

ImageCapture API能够控制相机功能,例如变焦、亮度、对比度、ISO和白平衡。最棒的是,图像捕获允许您访问任何可用的设备摄像头或网络摄像头。以前的服用技巧网络上的照片使用了视频快照分辨率高于静止图像的分辨率。

解决您的问题:

你可以通过用户体验和缩放滑块来解决这个问题。以下是有关如何使用ImageCapture(静态图像)实现此功能的信息。MediaCapture(视频源)不允许此功能。你可以使用MediaCapture,并有一个按钮,如"手动模式",允许用户选择正确的变焦来拍摄照片。

您还可以通过每次更新执行n个ImageCaptures的更新循环来"模拟"相机,并使用缩放滑块。

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

下面是一个关于如何使用它/polyfill的示例:https://github.com/GoogleChromeLabs/imagecapture-polyfill

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

希望这能帮助

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

我们添加了一个重新启动所有程序的按钮,以某种方式缓解问题。。。