javascript - 如何找出用户授予了哪个麦克风设备权限?
问题描述
我询问用户使用相机和麦克风的权限:
await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
在 Firefox 中,我收到以下提示:
用户授予权限后,如何判断选择了哪个摄像头和麦克风?的返回值getUserMedia
没有提供太多信息。
解决方案
一旦 gUM 给了您一个stream
对象,请执行以下操作:
async function getAudioDeviceLabel(stream) {
let audioDeviceLabel = 'unknown'
const tracks = stream.getAudioTracks()
if( tracks && tracks.length >= 1 && tracks[0] ) {
const settings = tracks[0].getSettings()
const chosenDeviceId = settings.deviceId
if (chosenDeviceId) {
let deviceList = await navigator.mediaDevices.enumerateDevices()
deviceList = deviceList.filter(device => device.deviceId === chosenDeviceId)
if (deviceList && deviceList.length >= 1) audioDeviceLabel = deviceList[0].label
}
}
return audioDeviceLabel
}
这会从其设置中获取流的音轨的 deviceId。然后,它查看枚举设备列表以检索与 deviceId 关联的标签。
获取这些信息有点头疼。
推荐阅读
- c# - 保存时出错:指定的演员表无效
- html - 将 CSS 提取到 HTML 标签中
- mysql - MySQL数据库Nodejs,初始表查询
- gimp - script-fu 控制台上的 GIMP 复制层
- python - 单行for循环
- sparql - SPARQL 的 FILTER() 没有按预期工作
- r - 匹配功能无法找到现有匹配
- c# - 使用 x509.ParseCertificateRequest 解组失败但 openssl 可以吗?
- ios - 将菜单编程到 TableView 单元格中
- android - 了解 Tab 活动的代码。PagerAdapter 和 Placeholder 是什么关系