原生js检测浏览器硬件检测是否支持音视频能力

308 阅读1分钟

// 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

}