尝试使用 catch 块。这是我的
async function webcamCheck() {
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { // browser support
let stream = null;
try {
stream = await navigator.mediaDevices.getUserMedia({video:true});
showVideoControls();
video.srcObject = stream;
video.play();
} catch(err) {
setError(err.name + ": " + err.message);
}
if (!checkForErrors()) console.log('Webcam found :)');
}
else {
setError("This browser does not support webcam technology");
}
}
,
我希望这个JavaScript库DetectRTC解决您的问题。
if (DetectRTC.hasWebcam === false) {
alert('Please install an external webcam device.');
}
您还可以查看实时演示here。
,
只需将.catch()
块添加到您的getUserMedia()
呼叫中。这样,如果没有设备,或者用户不允许媒体捕获,则可以处理错误。
,
您需要navigator.getUserMedia
尝试此功能。
function hasUserMedia() {
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia
|| navigator.mozGetUserMedia || navigator.msGetUserMedia;
return !!navigator.getUserMedia;
}
,应称为
if (hasUserMedia()) {
navigator.mediaDevices.getUserMedia(callConstraints)
.then(gotStream)
.catch(function(e) {
alert('getUserMedia() error: ' + e.name);
});
}
else{
alert('hasUserMedia() error: ');
}
此外,如果Cam可用但用户未授予许可,则可能需要检查许可。为此,您可以使用以下功能。
checkForVideoAudioAccess = async () => {
try {
const cameraResult = await navigator.permissions.query({ name: 'camera' });
isCameraAccessGranted = cameraResult.state !== 'denied';
const microphoneResult = await navigator.permissions.query({ name: 'microphone' });
isMicrophoneAccessGranted = microphoneResult.state !== 'denied';
}
catch(e) {
console.error('An error occurred while checking the permissions',e);
}
return true;
}
本文链接:https://www.f2er.com/1403703.html