【问题标题】:getUserMedia lock focus/exposuregetUserMedia 锁定焦点/曝光
【发布时间】:2015-06-02 04:34:03
【问题描述】:

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

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

有谁知道这在 JS 端是否可行?

【问题讨论】:

标签: javascript canvas camera html5-video getusermedia


【解决方案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 个 ImageCapture 并使用缩放滑块。

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

希望对你有帮助

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多