跳到主要内容

enumerateDevices

2024年02月04日
柏拉文
越努力,越幸运

一、认识


mediaDevices.enumerateDevices() 请求一个可用的媒体输入和输出设备的列表,例如麦克风,摄像机,耳机设备等。返回的 Promise (en-US) 完成时,会带有一个描述设备的 MediaDeviceInfo (en-US) 的数组。

二、语法


const enumeratorPromise = navigator.mediaDevices.enumerateDevices();
  • enumeratorPromise: 返回一个 Promise (en-US) 。当完成时,它接收一个 MediaDeviceInfo (en-US) 对象的数组。每个对象描述一个可用的媒体输入输出设备。如果枚举失败,promise 也会被拒绝(rejected)

三、场景


3.1 获取输入设备

获取输入设备: 相机、麦克风都属于输入设备

async function enumMediaDevices() {
try {
const devices = await navigator.mediaDevices.enumerateDevices();
const inputDevices = devices.filter(item => {
return item.kind.endsWith('input') && item.deviceId !== '';
});
const audioInputs = inputDevices.filter(
item => item.kind === 'audioinput'
);
const videoInputs = inputDevices.filter(
item => item.kind === 'videoinput'
);
console.log('输入设备:', inputDevices);
console.log('音频输入设备:', audioInputs);
console.log('视频输入设备:', videoInputs);
} catch (error) {
console.error('enumerateDevices error:', error);
}
}

enumMediaDevices();