如何解决我如何检查用户是否没有网络摄像头?
我正在尝试建立视频聊天平台,但我不知道如何检测用户是否没有可用的网络摄像头,如果没有,则它将视频供稿设置为静态图像或名称和个人资料图片。
这是我当前获取网络摄像头的方式:
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);
}
解决方法
尝试使用 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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。