WebRTC - 可以获取指定的媒体设备信息 - 例如扬声器



我想在我的网站上播放扬声器指定的声音。我已经通过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);
}

你没有忽略"默认",你只使用"默认">

"默认"是最好的东西,它是在操作系统级别选择的,它将在默认音频输出下播放声音,这是在大多数情况下所需要的。

我认为不可能事先获得确切的输出设备。虽然您可以选择任何:)

    不同的
  1. 浏览器将返回不同的、相似的结果:

    navigator.mediaDevices.enumerateDevices((.then(function (mediaDevices({ console.log("mediaDevices: ", mediaDevices(;});

  2. 可以通过网站设置选择麦克风,相机默认设置,在chrome中,但不能选择音频输出。

但是您可以给出可能的音频输出列表并从中选择,例如:韦伯特克

最新更新