浏览器获取摄像头、麦克风设备

兼容性API

//判断navigator.mediaDevices是否存在
if(navigator.mediaDevices === undefined) {
  navigator.mediaDevices = {};
}

//判断navigator.mediaDevices.getUserMedia是否存在
if(navigator.mediaDevices.getUserMedia === undefined) {
  navigator.mediaDevices.getUserMedia = function(constraints) {
    var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

    if (!getUserMedia) {
      return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
    }

    return new Promise(function(resolve, reject) {
      getUserMedia.call(navigator, constraints, resolve, reject);
    });
  }
}

获取设备

navigator.mediaDevices.getUserMedia({
  audio: true,
  video: true
}).then(stream => {
  let tracks = stream.getTracks();
  for(let i = 0; i < tracks.length; i++) {
    tracks[i].stop();
  }

}).catch(err => {
  switch (err.name) {
    case 'NotAllowedError':
       //未授权
      break;
    case 'NotReadableError':
      //设备正在被使用
      break;
    case 'NotFoundError':
      //未找到设备
      break;
    case 'OverconstrainedError':
      //设备ID不正确或不可用
      break;
  }
});
posted @ 2022-04-29 15:17  天朗气清惠风和畅  阅读(322)  评论(0)    收藏  举报