0

我想通过我网站上的扬声器播放指定的声音。我已经通过 mediaDevices.getUserMedia 获得了所有用户设备,就像在这个演示https://webrtc.github.io/samples/src/content/devices/input-output/中一样。

关键是获取扬声器而不是耳机等。 DeviceInfo 对象有 4 个属性:

deviceId - 一些 GUID

组 ID - 其他一些 GUID

kind - 由“audiooutput”过滤

标签 - 名称

有没有机会 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);

}

4

1 回答 1

0

你没有忽略“默认”,你只使用“默认”

'default' 是最好的,它是在操作系统级别选择的,并将在默认音频输出处播放声音,这在大多数情况下都是正确的。

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

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

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

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

但是你可以给出一个可能的音频输出列表并从中选择: webrtc

于 2019-07-16T08:40:56.057 回答