2

我正在使用 MediaDevices API 来获取音频输出设备的列表:

const outputDevices = (
  await navigator.mediaDevices.enumerateDevices()
).filter(device => device.kind === 'audiooutput');

这有效,但label为空白。

我知道如果我getUserMedia()用来请求音频或视频流,我可以重新枚举设备并获取它们的标签。有没有办法获得查看设备的权限 getUserMedia()?我想设置音频输出的接收器 ID,没有理由使用捕获设备。

4

2 回答 2

1

不幸的是,这是音频输出设备 API 的一个已知限制——关于 github 问题的讨论指向可能的解决方案,但尚未做出明确的决定。

于 2020-01-15T10:00:10.160 回答
0

为了得到这些信息,我必须先做一个简单的getUserMedia ({audio: true})操作。完成枚举后,删除流中的曲目,然后删除流是没有问题的。

它将要求用户许可。为什么?因为恶意方可能会使用您的设备枚举数据对您的浏览器进行指纹识别并帮助跟踪您。

于 2019-12-13T17:05:30.553 回答