首页 > 解决方案 > 如何找出用户授予了哪个麦克风设备权限?

问题描述

我询问用户使用相机和麦克风的权限:

await navigator.mediaDevices.getUserMedia({ audio: true, video: true });

在 Firefox 中,我收到以下提示:

在此处输入图像描述

用户授予权限后,如何判断选择了哪个摄像头和麦克风?的返回值getUserMedia没有提供太多信息。

标签: javascriptgetusermedia

解决方案


一旦 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 关联的标签。

获取这些信息有点头疼。


推荐阅读