javascript Firefox:navigator.getUserMedia不是函数

suzh9iv8  于 2023-06-28  发布在  Java
关注(0)|答案(6)|浏览(160)

我在玩浏览器和音频。
我在做这个

var session = {
          audio: true,
          video: false
        };
        var recordRTC = null;
        navigator.getUserMedia(session, initializeRecorder, onError);

但是,使用最新的FF可用我得到了一个JavaScript错误,说
navigator.getUserMedia不是函数
我从这篇博客文章中复制了这段代码:https://blog.groupbuddies.com/posts/39-tutorial-html-audio-capture-streaming-to-nodejs-no-browser-extensions
在最新的Chrome上:
未捕获的类型错误:undefined不是函数
但我知道这个API是支持从两个浏览器
我做错了什么?

jyztefdp

jyztefdp1#

不支持无前缀。参见http://caniuse.com/#search=getusermedia
您需要获取特定于浏览器的前缀并使用它。如another answer中所示:

navigator.getUserMedia = ( navigator.getUserMedia ||
                       navigator.webkitGetUserMedia ||
                       navigator.mozGetUserMedia ||
                       navigator.msGetUserMedia);

这将把navigator.getUserMedia设置为它检测到的正确前缀版本。

63lcw9qa

63lcw9qa2#

由于navigator.getUserMedia()已弃用,请使用以下命令:

navigator.getUserMedia = (
    navigator.getUserMedia ||
    navigator.webkitGetUserMedia ||
    navigator.mozGetUserMedia ||
    navigator.msGetUserMedia
);

if (typeof navigator.mediaDevices.getUserMedia === 'undefined') {
    navigator.getUserMedia({
        audio: true
    }, streamHandler, errorHandler);
} else {
    navigator.mediaDevices.getUserMedia({
        audio: true
    }).then(streamHandler).catch(errorHandler);
}
oxcyiej7

oxcyiej73#

检查MDN page,特别是第一个例子的第一部分:

navigator.getUserMedia = ( navigator.getUserMedia ||
                       navigator.webkitGetUserMedia ||
                       navigator.mozGetUserMedia ||
                       navigator.msGetUserMedia);

它不是很好的支持-你需要浏览器前缀。

ttcibm8c

ttcibm8c4#

Navigator.getUserMedia()已弃用,建议使用MediaDevices.getUserMedia()

async function getMedia(pc) {
  let stream = null;

  try {
    stream = await navigator.mediaDevices.getUserMedia(constraints);
    /* use the stream */
  } catch(err) {
    /* handle the error */
  }
}
qc6wkl3g

qc6wkl3g5#

问题是
如果当前文档没有安全加载,navigator.mediaDevices将是未定义的,并且您不能使用getUserMedia()。有关此问题以及与使用getUserMedia()相关的其他安全问题的详细信息,请参阅安全性
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia所示
经过搜索,我找到了解决办法

尝试以下步骤:

1.打开Chrome浏览器,在URL中键入chrome://flags/#unsafely-treat-insecure-origin-as-secure
1.添加您的主机/本地URL的路径(例如localhost/myproject或YOUR_HOSTNAME)
1.选择【启用】。
1.重新启动浏览器。

izkcnapc

izkcnapc6#

我使用navigator.mediaDevices.enumerateDevices()查找已连接的摄像头,但出现此错误

navigator.mediaDevices.enumerateDevices() is not a function

当没有连接任何摄像头时。我使用React来开发前端,所以为了解决这个问题,我创建了一个.env文件,其中包含`HTTPS= true '。因此,在浏览器中,我可以使用https协议来服务项目,当相机没有连接时,我没有任何错误。

相关问题