当我尝试执行以下代码并选择笔记本电脑的相机时,我在Firefox 51中出现此错误:
navigator.getMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mediaDevices.getUserMedia ||
navigator.msGetUserMedia);
navigator.getMedia({
video: true,
audio: false
},
function(stream) {
if (navigator.mozGetUserMedia) {
video.mozSrcObject = stream;
} else {
var vendorURL = window.URL || window.webkitURL;
video.src = vendorURL.createObjectURL(stream);
}
video.play();
},
function(err) {
console.log("An error occured! " + err);
}
);
错误:
NotReadableError: Failed to allocate videosource
有人可以详细说明这意味着什么吗?我的网络摄像头坏了吗?我昨天在剧本中使用它没有问题。它没有分配给其他应用程序。
答案 0 :(得分:16)
NotReadableError
是允许网络摄像头访问时Firefox引发的符合规范的错误,但不可能。
最常见的情况发生在Windows上,因为网络摄像头已被其他应用程序使用。 Firefox会在Windows和Mac上抛出此错误,即使只有Windows进程才能获得对网络摄像头的独占访问权限。
错误可能由于其他原因而发生:
虽然用户已授予使用匹配设备的权限,但操作系统,浏览器或网页级别发生硬件错误,导致无法访问设备。
Chrome会引发TrackStartError
。它也会引发other reasons。 Chrome标签页可以共享同一设备。
答案 1 :(得分:4)
请确保您的相机未被其他应用程序(Chrome,即任何其他浏览器)使用。 我浪费了一天寻找解决方案,最后发现我的相机被其他应用程序使用了......
答案 2 :(得分:1)
这个问题还有一个解决方案。我的相机无法在 Firefox 和 Skype 中使用,但可以使用相机应用。
解决方案是为“经典应用程序”提供对相机的访问权限(我不知道它在英语中如何称呼)。它在同一个地方可以为所有其他应用程序提供或获取访问权限,只需在它们下面确保也允许经典应用程序。不仅仅是为有问题的应用程序提供支持,例如 Firefox,所有经典应用程序都需要启用该功能
答案 3 :(得分:0)
有人可以详细说明这是什么意思吗?我的网络摄像头坏了吗?我用了 从脚本到昨天才没有问题。没有分配给 其他应用程序。
我遇到了完全相同的问题!
对我感到羞耻!因为与此同时,我添加了一个https://blogs.msdn.microsoft.com/devops/2018/01/30/mstest-v2-in-assembly-parallel-test-execution/事件,包括beforeunload中报告的event.preventDefault
。
删除此event.preventDefault
后,一切正常-符合预期。
答案 4 :(得分:0)
我在Windows 10上遇到了相同的问题,没有其他应用在使用我的视频设备。问题在于,在Windows 10的“设置”->“应用程序权限”(在左列中)中,需要打开麦克风和摄像头的设置(允许应用程序访问您的麦克风/摄像头)。没关系,您不会在此设置下方的应用列表中找到您的浏览器,只需在此处启用它,瞧。
答案 5 :(得分:0)
显示的消息getUserMedia() error: NotReadableError
用于Chromium,但不显示Firefox Web浏览器。我还注意到,在Chromium中使用getUserMedia
功能且没有麦克风访问功能的WebRTC示例正常工作。
实际上,我必须确保启用了麦克风,然后在Chromium / Chrome设置中选择正确的麦克风。然后,具有音频和视频访问权限的WebRTC可以正常工作。
如果不是麦克风问题,也可能是网络摄像头问题,因此您必须确保在Chromium / Chrome设置中启用并正确选择了网络摄像头。
请注意,一次只能有一个应用程序可以使用网络摄像头/麦克风。
答案 6 :(得分:0)
如果您是2019年12月之后或2019年12月在这里,我想告诉您几件事
navigator.getUserMedia()
已过时。window.navigator.mediaDevices.getUserMedia
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Jello</title>
<style>
video{
width: 30%;
height: auto;
}
</style>
</head>
<body>
<video autoplay controls></video>
<button>Open Cam</button>
<script>
function getCam(){
window.navigator.mediaDevices.getUserMedia({video:true}).then((stream)=>{
// let videoTrack = stream.getVideoTracks()[0];
// console.log(videoTrack);
document.querySelector("video").srcObject = stream;
}).catch(err=> console.log(err.name))
}
// getCam();
document.querySelector("button").addEventListener("click", getCam);
</script>
</body>
</html>
答案 7 :(得分:0)
我到处搜索了解决方案,最后发现了这一点。基本上,在我的情况下,摄像头权限已打开,Mozilla firefox可以访问网络摄像头,但chrome无法访问。像74.x这样的旧版chrome可以使用网络摄像头,但最新的84.x则不能。我以为问题出在铬上,但最后,我尝试从Windows 10设置打开麦克风访问权限。 chrome现在也可以访问网络摄像头。
解决方案:请检查是否已通过Windows设置打开了摄像头和麦克风访问权限。
答案 8 :(得分:0)
如果摄像头变化太快,也会在会话期间抛出 NonReadableError:无法启动视频源(不仅仅是本地!)。
我还不知道解决方案,但一旦我得到它,我会相应地编辑我的帖子。