2016-04-14 114 views
0

我试图构建一个函数,通过Javascript获取浏览器的所选麦克风名称。就像我们在系统中有几个麦克风并且浏览器中有一个被选中一样,我需要知道他的名字以便在其他功能中使用它。Javascript:获取浏览器所选的麦克风名称

我尝试了getUserMedia方法,但我无法计算如何获得这个麦克风名称。而且,正如我在一些文章中看到的,谷歌浏览器存在一些不兼容问题。

是否有任何其他方式获取此信息?

+0

你已经看过'navigator.mediaDevices.enumerateDevices()'?这里解释:https://developers.google.com/web/updates/2015/10/media-devices虽然它只支持谷歌浏览器和Firefox。 – Tomasito665

回答

1
  • navigator.mediaDevices.enumerateDevices()

    mediaDevice.label


navigator.mediaDevices.enumerateDevices() 
.then(function(devices) { 
    devices.forEach(function(device) { 
    console.log(device.kind + ": " + device.label + 
      " id = " + device.deviceId); 
    }); 
}) 

通过铬45支持,火狐39


  • MediaStreamTrack.getSources()

弃用

MediaStreamTrack.label 

MediaStreamTrack.getSources(function(sourceInfos) { 
    for (var i = 0; i != sourceInfos.length; ++i) { 
    var sourceInfo = sourceInfos[i]; 
    console.log(sourceInfo.id, sourceInfo.label); 
    } 
}); 

弃用在铬45,在浏览器除去47.


getUserMedia必须之前 'enumerateDevices' 或 'getSources' 的方法来调用


+0

你好。谢谢您的回复!两种解决方案都运行良好,对我所需要的东西很有帮助。然而,很难知道浏览器正在使用的麦克风,因为无论浏览器中默认选择哪一个,它们总是具有相同的顺序。 – Bruno

+0

“一些像OSX这样的操作系统有一个”虚拟“默认设备,它的标签中通常有单词”default“(仅在使用过程中可用,或者如果用户授予持久权限),但不是每个操作系统都这样做,不知道任何其他方式来检测违约。“ @jib http:// stackoverflow。com/questions/31264487/web-audio-api-input-from-specific-microphone – bfmags

+0

对不起,英语不是我的主要语言。我会尝试更好地解释它: 我有这个麦克风在浏览器中默认选中:http://s9.postimg.org/igwc1yrfz/mic.png 现在我需要通过Javascript知道的名称/ ID这个麦克风。在浏览器中被选为默认的那个。 我需要这个的原因是将该名称或ID发送到服务,因为我将有另一个应用程序需要使用另一个麦克风。在这个应用程序中需要排除浏览器中使用的麦克风。 – Bruno