javascript - 找出当前的手电筒状态
问题描述
假设我有一个通过 getUserMedia 捕获的 MediaStream。如果这是智能手机上的后置摄像头,我可以像这样打开/关闭灯:
const videoTrack = mediaStream.getVideoTracks()[0];
videoTrack.applyConstraints({
advanced: [
{ torch: true }
]
});
我想切换这个状态,所以我需要想办法得到它。它似乎可以通过以下方式获得getSettings()
:
videoTrack.getSettings().torch; // false
false
但是,无论我将当前约束设置为什么,它似乎总是会返回。
torch
获取视频流/相机的状态以及理想情况下的其他高级约束的正确方法是什么?
解决方案
有趣的是,目前对 Torch 的支持似乎仅限于在 Google Pixel 等设备上的 Android 版 Chrome。
关于您的代码,applyConstraints方法是异步的。应用设置需要时间,因此您必须等待它返回的承诺,然后才能读取修改结果。尝试使用/ :_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: []
,一个更旧的更复杂的语法。今天的现代语法更简单。
推荐阅读
- python - 如何连接字典的所有键和值并以字符串的形式返回?
- java - 在 Java 中的多线程套接字编程方面需要帮助
- javascript - 在javascript中将三元运算分解为if,else
- javascript - 如何修复错误:对象作为 React 子对象无效(找到:[object Promise])
- javascript - 为 HTML 表单生成安全随机数
- php - woocmmerce 函数类的选择选项上的 foreach 数组存在问题
- c - Linux从_start获取终端参数不适用于C中的内联汇编
- flutter - 尝试将小部件添加到小部件列表
- f# - 读取与 f# 中的元组在同一行中的两个整数
- java - 如何生成两个数组的组合?