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();