如何获取(内置)麦克风的硬件信息?

How to get hardware information of (in-build) microphone?

当用户在我的网站上录制音频文件时,是否可以读取(内置)麦克风的硬件信息(至少是名称)?

JavaScript 可以吗?还有其他方法可以解决这个问题吗?我在网上搜索,但只能找到使用 JavaScript.

录制的脚本

已过时API

此答案使用非标准的 API,浏览器支持有限。在撰写本文时,它在当前 Chrome 中有效,但不会在其他浏览器的未来版本中采用,并且可能会在 Chrome 中消失。有关更广泛支持的解决方案,请参阅:


使用MediaStreamTrack.getSources(),您可以获得可用资源的列表。每个来源都有一个 kind 属性,以及一个 label.

MediaStreamTrack.getSources(function(sourceInfos) {
    for (var i = 0; i != sourceInfos.length; ++i) {
        var thisSource = sourceInfos[i];
        console.log('stream type: '+thisSource.kind+', label: '+thisSource.label); 
        // example: stream type: audio, label: internal microphone
    }
});

文档及相关内容

较新版本:在 Firefox、MS Edge 和 Chrome 45 中可用,带有实验标志。

使用标准 navigator.mediaDevices.enumerateDevices(),您可以获得可用资源的列表。每个来源都有一个 kind 属性,以及一个 label.

var stream;
navigator.mediaDevices.getUserMedia({ audio:true })
.then(s => (stream = s), e => console.log(e.message))
.then(() => navigator.mediaDevices.enumerateDevices())
.then(devices => {
  stream && stream.stop();
  console.log(devices.length + " devices.");
  devices.forEach(d => console.log(d.kind + ": " + d.label));
})
.catch(e => console.log(e));

var console = { log: msg => div.innerHTML += msg + "<br>" };
<div id="div"></div>

文档及相关内容

由于 adapter.js polyfill,最后一个演示可以正常运行 Chrome。