navigator.mediaDevices.enumerateDevices()
时间: 2025-01-07 14:12:46 浏览: 5
### 如何使用 `navigator.mediaDevices.enumerateDevices()` 枚举媒体设备
`navigator.mediaDevices.enumerateDevices()` 是用于枚举用户可访问的多媒体输入输出设备的方法,返回的是一个 Promise 对象。此方法可以用来获取当前用户的音频和视频输入输出设备列表。
#### 获取设备列表并打印基本信息
下面是一个简单的例子来展示如何调用 `enumerateDevices()` 并处理其结果:
```javascript
navigator.mediaDevices.enumerateDevices()
.then(function (devices) {
devices.forEach(function (device) {
console.log(`Kind: ${device.kind}, Label: ${device.label}, Device ID: ${device.deviceId}`);
});
})
.catch(function (err) {
console.error(`Error occurred: ${err.name}: ${err.message}`);
});
```
这段代码尝试列举所有的媒体设备,并将每种类型的设备信息(种类、标签以及唯一标识符)记录到控制台中[^1]。
#### 处理不同类型的设备
为了更具体地操作特定类型的设备,比如只关心摄像头或麦克风的信息,可以在遍历过程中加入条件判断语句:
```javascript
navigator.mediaDevices.enumerateDevices()
.then(function (devices) {
const audioInputs = [];
const videoInputs = [];
devices.forEach(function (device) {
if (device.kind === "audioinput") {
audioInputs.push({ label: device.label, deviceId: device.deviceId });
} else if (device.kind === "videoinput") {
videoInputs.push({ label: device.label, deviceId: device.deviceId });
}
});
console.log('Audio Inputs:', audioInputs);
console.log('Video Inputs:', videoInputs);
})
.catch(function (err) {
console.error(`Error occurred: ${err.name}: ${err.message}`);
});
```
这里分别创建了两个数组存储来自同一类别的设备信息——一个是音频输入源,另一个是视频输入源。这样可以根据实际需求进一步筛选所需的数据[^3]。
阅读全文