我如何检查用户是否没有网络摄像头?

我正在尝试建立视频聊天平台,但我不知道如何检测用户是否没有可用的网络摄像头,如果没有,则它将视频供稿设置为静态图像或名称和个人资料图片。

这是我当前获取网络摄像头的方式:

navigator.mediaDevices.getUserMedia(with_video).then((stream) => {
    addVideoStream(myVideo,stream);

    myPeer.on('call',(call) => {
        call.answer(stream);
        const video = document.createElement('video');
        call.on('stream',(userVideoStream) => {
            addVideoStream(video,userVideoStream);
        });
    });

    socket.on('user-connect',(userId) => {
        connectToNewUser(userId,stream);
        join.play();
    });
});

addVideoStream:

function addVideoStream(video,stream) {
    video.srcObject = stream;
    video.addEventListener('loadedmetadata',() => {
        video.play();
    });
    videoGrid.append(video);
}
wjqact 回答:我如何检查用户是否没有网络摄像头?

尝试使用 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

大家都在问