确定当前的火炬状态



假设我有一个通过getUserMedia捕获的MediaStream。 如果这是智能手机上的后置摄像头,我可以像这样打开/关闭灯:

const videoTrack = mediaStream.getVideoTracks()[0];
videoTrack.applyConstraints({
  advanced: [
    { torch: true }
  ]
});

我想切换这个状态,所以我需要想办法得到它。 它似乎可以通过getSettings()获得:

videoTrack.getSettings().torch; // false

但是,无论我将当前约束设置为什么,它似乎总是返回false

获取torch状态的正确方法是什么,理想情况下是视频流/摄像机的其他高级约束?

有趣的是,目前对Torch的支持似乎仅限于Google Pixel等设备上的Chrome for Android。

关于您的代码,applyConstraint 方法是异步的。应用设置需要时间,因此您必须等待它返回的承诺,然后才能读取修改结果。使用async/await尝试此操作:

async function (mediaStream) {
  const videoTrack = mediaStream.getVideoTracks()[0];
  await videoTrack.applyConstraints({torch: true});
  console.log(videoTrack.getSettings().torch); // true
};

。或者用then形成承诺链:

function (mediaStream) {
  const videoTrack = mediaStream.getVideoTracks()[0];
  return videoTrack.applyConstraints({torch: true})
    .then(() => console.log(videoTrack.getSettings().torch)); // true
};

第三,advanced: []没有什么高级的,一种更古老的更复杂的语法。今天的现代语法更简单。

相关内容

  • 没有找到相关文章

最新更新