【问题标题】:Video track doesn't have capabilities from Navigator.mediaDevices.getSupportedConstraints()视频轨道没有来自 Navigator.mediaDevices.getSupportedConstraints() 的功能
【发布时间】:2019-09-24 10:44:48
【问题描述】:

我在页面上有一个带有摄像头流的视频标签,我想更改 focusMode 和 focusDistance。

问题是我可以在 navigator.mediaDevices.getSupportedConstraints() 中看到 focusMode 和 focusDistance,但我没有看到它们,然后我尝试获取它们并从实际视频中更改,如下所示:


navigator.mediaDevices.getUserMedia(constraints)
      .then((stream) => handleSuccess(stream, canPlay))
      .catch(e => console.log(e))

function handleSuccess(stream, canPlay, video) {
  const video = document.getElementById('video');
  video.srcObject = stream
  const track = stream.getVideoTracks()[0];
  track.getCapabilities() // doesn't return focusMode or focusDistance.
}

总的来说,我想做这样的事情:

function onCapabilitiesReady(capabilities) {
    if (!capabilities.focusDistance) {
      return;
    } else {
      track.applyConstraints({
        advanced : [{focusMode: "manual", focusDistance: 0.3}]
      });
    }
  }

【问题讨论】:

    标签: javascript webrtc getusermedia media-source mediastream


    【解决方案1】:

    发件人:documentation

    流程如下(以 MediaStreamTrack 为例):

    1. 如果需要,请调用 MediaDevices.getSupportedConstraints() 以获取 支持的约束列表,它告诉你什么是可约束的 浏览器知道的属性。这并不总是必要的, 因为当您指定时,任何未知的都将被忽略 他们——但如果你有任何你不能没有的东西,你可以 首先检查以确保它们在列表中。

    2. 一旦脚本知道它希望使用的一个或多个属性是否受支持,它就可以检查 API 的功能 并通过检查对象的实现返回轨道的 getCapabilities() 方法;这个对象列出了每个支持的约束 以及支持的值或值范围。

    3. 最后,调用 track 的 applyConstraints() 方法,通过指定值或范围来根据需要配置 API 它希望用于任何可约束属性的值 它有一个偏好。

    4. 轨道的 getConstraints() 方法返回传递给最近调用 applyConstraints() 的一组约束。这可能不会 表示轨道的实际当前状态,由于属性 必须调整其请求的值,并且因为平台默认 没有表示值。对于完整的表示 track的当前配置,使用getSettings()。

    在媒体流 API 中,MediaStream 和 MediaStreamTrack 都有 可约束的属性。

    getSupportedConstraints() 返回浏览器支持的约束/功能。但这并不一定意味着您的相机/网络摄像头支持它。这就是 getCapabilties() 的用武之地。另请注意...检查您应该调用 .getSettings() 的实际约束,因为 .getConstraints() 只会获取自定义/覆盖的约束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-21
      • 2011-10-07
      • 2018-09-10
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      相关资源
      最近更新 更多