解决方法
现场演示:
> https://www.webrtc-experiment.com/DetectRTC/
如果用户没有允许网络摄像头和/或麦克风,则媒体设备的“label”属性将具有“NULL”值.以上页面将显示此消息:“请调用getUserMedia一次”.
PS.您可以在Chrome控制台开发人员工具中输入“DetectRTC.MediaDevices”.
注意:它仅适用于Chrome. Firefox还不支持类似的API. (更新:Firefox支持)
于2015年12月16日更新
注意:以下代码段在Chrome和Firefox中都可用.
if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) { // Firefox 38+ seems having support of enumerateDevicesx navigator.enumerateDevices = function(callback) { navigator.mediaDevices.enumerateDevices().then(callback); }; } var MediaDevices = []; var isHTTPs = location.protocol === 'https:'; var canEnumerate = false; if (typeof MediaStreamTrack !== 'undefined' && 'getSources' in MediaStreamTrack) { canEnumerate = true; } else if (navigator.mediaDevices && !!navigator.mediaDevices.enumerateDevices) { canEnumerate = true; } var hasMicrophone = false; var hasspeakers = false; var hasWebcam = false; var isMicrophoneAlreadyCaptured = false; var isWebcamAlreadyCaptured = false; function checkDeviceSupport(callback) { if (!canEnumerate) { return; } if (!navigator.enumerateDevices && window.MediaStreamTrack && window.MediaStreamTrack.getSources) { navigator.enumerateDevices = window.MediaStreamTrack.getSources.bind(window.MediaStreamTrack); } if (!navigator.enumerateDevices && navigator.enumerateDevices) { navigator.enumerateDevices = navigator.enumerateDevices.bind(navigator); } if (!navigator.enumerateDevices) { if (callback) { callback(); } return; } MediaDevices = []; navigator.enumerateDevices(function(devices) { devices.forEach(function(_device) { var device = {}; for (var d in _device) { device[d] = _device[d]; } if (device.kind === 'audio') { device.kind = 'audioinput'; } if (device.kind === 'video') { device.kind = 'videoinput'; } var skip; MediaDevices.forEach(function(d) { if (d.id === device.id && d.kind === device.kind) { skip = true; } }); if (skip) { return; } if (!device.deviceid) { device.deviceid = device.id; } if (!device.id) { device.id = device.deviceid; } if (!device.label) { device.label = 'Please invoke getUserMedia once.'; if (!isHTTPs) { device.label = 'HTTPs is required to get label of this ' + device.kind + ' device.'; } } else { if (device.kind === 'videoinput' && !isWebcamAlreadyCaptured) { isWebcamAlreadyCaptured = true; } if (device.kind === 'audioinput' && !isMicrophoneAlreadyCaptured) { isMicrophoneAlreadyCaptured = true; } } if (device.kind === 'audioinput') { hasMicrophone = true; } if (device.kind === 'audiooutput') { hasspeakers = true; } if (device.kind === 'videoinput') { hasWebcam = true; } // there is no 'videoouput' in the spec. MediaDevices.push(device); }); if (callback) { callback(); } }); } // check for microphone/camera support! checkDeviceSupport(function() { document.write('hasWebCam: ',hasWebcam,'<br>'); document.write('hasMicrophone: ',hasMicrophone,'<br>'); document.write('isMicrophoneAlreadyCaptured: ',isMicrophoneAlreadyCaptured,'<br>'); document.write('isWebcamAlreadyCaptured: ',isWebcamAlreadyCaptured,'<br>'); });
原文地址:https://www.jb51.cc/js/152737.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。