【问题标题】:NotReadableError: Failed to allocate videosourceNotReadableError:分配视频源失败
【发布时间】:2017-03-03 00:27:19
【问题描述】:

当我尝试执行以下代码并选择笔记本电脑的相机时,我在 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

谁能详细说明这意味着什么?我的网络摄像头坏了吗?我昨天从脚本中使用它没有问题。它没有分配给其他应用程序。

【问题讨论】:

  • 我得到TypeError: 'getUserMedia' called on an object that does not implement interface MediaDevices.,因为your polyfill is borked。另外,您的browser-conditional code is wrongcreateObjectURL is deprecated。考虑using adapter.js instead,或者享受现在大多数浏览器已经原生支持navigator.mediaDevices.getUserMedia
  • 另外,如果您可以让我知道是哪个示例代码或文章启发了您的代码,我可以将其搜索并烧掉,我将不胜感激。 ;)
  • Firefox 警告我有关 polyfill 并建议 navigator.mediaDevices.getUserMedia,但实际上并没有工作并引发错误。我不知道我从哪里复制的。如果我要判断它,我看到的主要问题是它使用<video>标签来捕获帧,而不是一些编程API。我会检查您给我的链接,以使示例更新,但我认为我们可以同意这不是问题的原因。感谢您的反馈和警告。
  • 同意,但是如果没有看到真实的代码和了解真实情况,很难知道出了什么问题。这个wfm fwiw(使用视频标签,就像你的例子一样)。
  • 如果您在关闭所有浏览器选项卡、其他浏览器和应用程序时仍然看到“NotReadableError: Failed to allocate videosource”,请尝试重新启动计算机。

标签: javascript html getusermedia


【解决方案1】:

NotReadableError 是 Firefox 在允许但无法访问网络摄像头时抛出的符合规范的错误。

这种情况最常发生在 Windows 上,因为网络摄像头已被另一个应用程序使用。 Firefox 会在 Windows 和 Mac 上抛出此错误,即使只有 Windows 进程才能独占访问网络摄像头。

该错误可能由于其他原因发生:

尽管用户授予了使用匹配设备的权限,但操作系统、浏览器或网页级别发生了硬件错误,阻止了对设备的访问。

Chrome 会抛出 TrackStartError。它还会为other reasons 抛出它。 Chrome 标签可以共享同一设备。

来源:common getUserMedia() errors

【讨论】:

  • 有什么可能的解决方案?当没有其他应用正在/正在使用网络摄像头时,仍然出现此错误?
  • @smkrn110 也许你也有这个问题:stackoverflow.com/questions/42568498/…
【解决方案2】:

请确保您的相机未被其他应用程序(chrome、ie 或任何其他浏览器)使用。 我浪费了半天时间寻找解决方案,最后发现我的相机被其他应用程序使用了。

【讨论】:

  • 哇!我应该花费多少时间来找到解决方案?!♥
  • 你救了我。
【解决方案3】:

我在 Windows 10 上遇到了同样的问题,没有其他应用程序使用我的视频设备。问题是在 Windows 10 中的设置-> 应用程序权限(在左栏中)有一个麦克风和相机设置(允许应用程序访问您的麦克风/相机)需要打开。没关系,您在此设置下方的应用列表中找不到您的浏览器,只需在此处启用它即可。

【讨论】:

  • 是的,如果您遇到这个问题,Windows 10 用户的真正解决方案要感谢马丁
  • 在我的情况下,相机权限在那里,但麦克风没有。因此,在授予麦克风权限后,一切正常。
【解决方案4】:

消息 getUserMedia() error: NotReadableError 显示在 Chromium 而不是 Firefox Web 浏览器中。我还注意到在 Chromium 中使用 getUserMedia 函数而没有麦克风访问权限的 WebRTC 示例可以正常工作。

事实上,我必须确保我的麦克风已启用并在 Chromium / Chrome 设置中选择正确的麦克风。然后具有音频和视频访问权限的 WebRTC 正常工作。

如果不是麦克风问题,也可能是网络摄像头问题,因此您必须确保在 Chromium / Chrome 设置中启用并正确选择了网络摄像头。

请注意,一次只有一个应用可以使用网络摄像头/麦克风。

【讨论】:

    【解决方案5】:

    如果您在 2019 年 12 月之后或之后在这里,我想告诉您几件事

    1. 此功能 navigator.getUserMedia() 已弃用。
    2. 浏览器中此功能的继承者将是window.navigator.mediaDevices.getUserMedia
    3. 新功能可能在许多浏览器中不支持,因为它仍然处于实验模式,几天前 chrome 发布了它的 chrome 79,它仍然不支持我的 chrome 79,除了 chrome 和 IE,它在所有浏览器中都可以使用适合我的浏览器
    4. 这是一个快速代码

    <!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>

    编辑 => 如果您在 Windows 10 中使用,请确保让 chrome 访问您的麦克风和摄像头,否则它将无法工作

    【讨论】:

      【解决方案6】:

      这个问题还有另一种解决方案。我的相机在 Firefox 和 Skype 中无法使用,但可以使用相机应用程序。

      解决方案是为“经典应用程序”提供相机访问权限(我不知道它在英语中是如何称呼的)。可以在同一位置为所有其他应用程序授予或获取访问权限,只需在它们下方确保也允许经典应用程序。不仅仅是为有问题的应用程序(如 Firefox)提供支持,所有经典应用程序都需要启用它

      【讨论】:

        【解决方案7】:

        Tl;博士; - 检查设备驱动程序是否有任何“有趣”的相机驱动程序

        我刚刚花了一个小时与一位不断遇到此错误的用户通话,无论我们尝试了什么,包括记下这个问题的每个答案。我们找到了另一个原因,我现在将在此处添加,让下一个可怜的人偶然发现它。

        在他的案例中,他安装了一个名为 ChromaCam 的应用程序(我几乎在诊断的第一步就退出了该应用程序)并且该应用程序安装了一个名为“Personify Virtual Camera Universal”的设备驱动程序 网络搜索该驱动程序名称将显示一大堆的人有相机问题,解决方案似乎有些普遍:卸载设备驱动程序。他甚至不知道 ChromaCam 是什么,也不知道它为什么会出现在他的笔记本电脑上,所以我们删除了它,卸载了驱动程序,一切都开始正常工作了!

        另一个线程中的另一个人遇到了类似的问题,对他来说,这是一些定制的 HP(?? - 我想他就是这么说的)相机驱动程序,而不是 Windows 会选择的普通通用驱动程序。

        【讨论】:

          【解决方案8】:

          谁能详细说明这意味着什么?我的网络摄像头坏了吗?我用过 从昨天的脚本没有问题。它没有分配给 其他应用程序。

          我遇到了完全相同的问题!

          真丢脸!因为同时我添加了一个beforeunload 事件,包括example 中报告的event.preventDefault

          删除此event.preventDefault 后,一切正常 - 正如预期的那样。

          【讨论】:

            【解决方案9】:

            我到处寻找解决方案,终于找到了这个。基本上在我的情况下,相机权限已打开,Mozilla firefox 可以访问网络摄像头,但 chrome 不能。事实上,像 74.x 这样的旧版 chrome 可以使用网络摄像头,但最新的 84.x 不能。我认为问题出在 chrome 上,但最后,我尝试从 Windows 10 设置打开我的麦克风访问。现在chrome也可以访问网络摄像头了。

            解决方案:请检查您的摄像头和麦克风访问权限均已从 Windows 设置中打开。

            【讨论】:

              【解决方案10】:

              如果相机更改发生得太快,也会在会话期间抛出 NonReadableError: Could not start video source(不仅仅是本地!)。

              我还不知道解决方案,但是一旦我得到它,我会相应地编辑我的帖子。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-07-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多