如何获取(内置)麦克风的硬件信息?
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
}
});
文档及相关内容
MDN 上的 MediaStreamTrack
- https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack
- "Capturing Audio & Video in HTML5" HTML5Rocks.com - http://www.html5rocks.com/en/tutorials/getusermedia/intro/
- Sam Dutton 选择输入源的演示 - https://simpl.info/getusermedia/sources/
较新版本:在 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>
文档及相关内容
MDN 上的 navigator.mediaDevices
- https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices
- "Media Capture and Streams" 规范 - http://w3c.github.io/mediacapture-main/getusermedia.html#mediadevices
- Sam Dutton 选择输入源的演示 - https://webrtc.github.io/samples/src/content/devices/input-output/
由于 adapter.js polyfill,最后一个演示可以正常运行 Chrome。
当用户在我的网站上录制音频文件时,是否可以读取(内置)麦克风的硬件信息(至少是名称)?
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
}
});
文档及相关内容
-
MDN 上的
MediaStreamTrack
- https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack- "Capturing Audio & Video in HTML5" HTML5Rocks.com - http://www.html5rocks.com/en/tutorials/getusermedia/intro/
- Sam Dutton 选择输入源的演示 - https://simpl.info/getusermedia/sources/
较新版本:在 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>
文档及相关内容
-
MDN 上的
navigator.mediaDevices
- https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices- "Media Capture and Streams" 规范 - http://w3c.github.io/mediacapture-main/getusermedia.html#mediadevices
- Sam Dutton 选择输入源的演示 - https://webrtc.github.io/samples/src/content/devices/input-output/
由于 adapter.js polyfill,最后一个演示可以正常运行 Chrome。