navigator.mediaDevices.getUserMedia能区分摄像头或者麦克风未插入么
能区分的话 要怎么区分?
现在设备不插入只会显示 DOMException: Requested device not found
而且只插入摄像头就不会显示报错信息,麦克风插没插好像检测不到
navigator.mediaDevices.getUserMedia能区分摄像头或者麦克风未插入么
能区分的话 要怎么区分?
现在设备不插入只会显示 DOMException: Requested device not found
而且只插入摄像头就不会显示报错信息,麦克风插没插好像检测不到
可以。
getUserMedia接受的参数如果传入{audio: true, video: true}的时候,不同的系统处理方式不同。
在Windows系统下,必须要摄像头和麦克风两者皆有,否则就会报not found。
在Mac系统下,摄像头或麦克风二者有其一,就会成功。
在这种逻辑下,我们应该对其做降级处理,当返回not found时,要分开获取{audio: true}和{video: true}。这时候就能区分出来是哪种设备未插入。
当二者皆失败,才是无设备的情况。
当然,我们也可以一开始就只做分开处理,这样就无需做降级处理,写法也更加优雅。
另外需要注意的是,我们平时买的外接摄像头,有些是自带有麦克风的。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.3k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
5 回答3.8k 阅读
这个很正常,因为原理不一样
对于摄像头来说,是真正的设备插入获取取出情况
对于麦克风来说,其实navigator.mediaDevices.getUserMedia对于计算机来说是识别是否有声卡,麦克风是声卡的外部扩展,是否插入不影响这里的识别(现在声卡一直都在的,普遍都至少有一块是有效的)。
所以对应声音采集,一般还会有第二部,这包括
注意,有些摄像头本身也是集成了声卡的。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。