2017-03-03 3115 views
3

我得到在Firefox 51这个错误,当我尝试执行下面的代码,当我选择我的笔记本电脑的摄像头:NotReadableError:无法分配videosource

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 

人详细说明这是什么意思?我的摄像头坏了吗?我昨天刚刚从脚本中使用它,没有任何问题。它没有分配给其他应用程序。

+1

我得到'TypeError:'getUserMedia'对一个没有实现接口MediaDevices.'的对象调用,因为[你的polyfill是borked](http://stackoverflow.com/a/37687846/918910)。此外,您的[浏览器条件代码错误](http://stackoverflow.com/a/39136641/918910)和'createObjectURL' [已弃用](http://stackoverflow.com/a/40210033/918910) 。考虑使用[改为使用adapter.js](http://jsfiddle.net/jib1/srn9db4h/),或者享受现在大多数浏览器本身已经支持'navigator.mediaDevices.getUserMedia'。 – jib

+0

此外,如果你可以请让我知道哪些示例代码或文章启发你的代码在这里,所以我可以追捕它,烧它,我会很感激。 ;) – jib

+0

Firefox警告我有关polyfill的问题,并建议使用'navigator.mediaDevices.getUserMedia',它实际上并没有工作,并且出现错误。我不知道我从哪里复制。如果我要判断它,我所看到的主要问题是它使用'

回答

2

NotReadableError是Firefox允许摄像头访问时允许的符合规范的错误,但不可能。

最常见的情况是这发生在Windows上,因为网络摄像头已被其他应用程序使用。即使只有Windows进程才能独占访问摄像头,Firefox也会在Windows和Mac上引发此错误。可能发生因其他原因

错误:

Although the user granted permission to use the matching devices, a hardware error occurred at the operating system, browser, or Web page level which prevented access to the device.

铬抛出TrackStartError代替。它也会将它投射到otherreasons。 Chrome标签可以共享相同的设备。

来源:common getUserMedia() errors

2

请确保您的相机未被某些其他应用程序使用(铬,即任何其他浏览器)。 我浪费了一天的时间寻找解决方案,并最终发现我的相机被其他应用程序使用...

+0

哇!我需要多少时间才能找到解决方案?!♥ – ivahidmontazer