// Safari和Firefox浏览器获取的设备信息和在Chrome获取的信息还是不一样的
export const getMediaAblity = async () => {
let isSupport = true
if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
console.log('不支持获取设备信息');
console.warning(
'当前浏览器不支持获取设备信息~'
);
} else {
console.info('系统正在获取设备信息~');
// 获取流,获取流成功后再获取设备信息
await navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(getMediaStream).then(getDevices).catch(handleError)
}
// 采集音视频数据成功时调用的方法,获取设备信息
function getMediaStream(stream) {
// 为了及时关闭摄像头
stream.getTracks().forEach(function (track) {
track.stop()
});
return navigator.mediaDevices.enumerateDevices()
}
// 浏览器获取音视频设备成功时调用的方法
function getDevices(deviceInfos) {
deviceInfos.forEach(function (deviceInfo) {
console.log('设备种类:' + deviceInfo.kind + ',设备名:' + deviceInfo.label + ',设备id: ' + deviceInfo.deviceId)
})
}
// 浏览器获取音视频设备失败时调用的方法
function handleError(err) {
console.log(err.name + ':' + err.message)
isSupport = false
}
return isSupport
}