我想在我的网站上播放扬声器指定的声音。我已经通过mediaDevices.getUserMedia获得了所有用户设备,就像这个演示 https://webrtc.github.io/samples/src/content/devices/input-output/一样。
关键是获取扬声器而不是例如耳机等。 设备信息对象有 4 个属性:
设备 ID - 某些 GUID
组 ID - 其他一些 GUID
种类 - 按"音频输出"过滤
标签 - 名称
有没有机会100%确定我们得到扬声器?
我已经过滤以忽略默认值:
function findSpeakers(audioOutputList){
let defaultDevice = audioOutputList.filter(device => {
if(device.deviceId == "default" && device.kind == "audiooutput"){
return true;
}else{
return false;
}
})
let audioOutputsWithoutDefault = audioOutputList.filter(device =>{
if(device.label.indexOf(defaultDevice[0].label.replace('Default - ','')) < 1 && device.kind == "audiooutput"){
return true;
}else{
return false;
}
})
console.log(audioOutputsWithoutDefault);
}
你没有忽略"默认",你只使用"默认">
"默认"是最好的东西,它是在操作系统级别选择的,它将在默认音频输出下播放声音,这是在大多数情况下所需要的。
我认为不可能事先获得确切的输出设备。虽然您可以选择任何:)
- 不同的
浏览器将返回不同的、相似的结果:
navigator.mediaDevices.enumerateDevices((.then(function (mediaDevices({ console.log("mediaDevices: ", mediaDevices(;});
可以通过网站设置选择麦克风,相机默认设置,在chrome中,但不能选择音频输出。
但是您可以给出可能的音频输出列表并从中选择,例如:韦伯特克