Firefox:navigator.getUserMedia 不是函数

Firefox: navigator.getUserMedia is not a function

我正在玩浏览器和音频。

我正在做这个

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

但是,使用最新可用的 FF 我得到一个 javascript 错误,说

navigator.getUserMedia is not a function

我从这个博客post复制了这段代码:https://blog.groupbuddies.com/posts/39-tutorial-html-audio-capture-streaming-to-nodejs-no-browser-extensions

与最新 Chrome 类似:

Uncaught TypeError: undefined is not a function

但我知道 api 这两种浏览器都支持

我做错了什么?

检查MDN page,尤其是第一个例子的第一部分:

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

它没有得到很好的支持 - 您需要浏览器前缀。

尚不支持无前缀。参见 http://caniuse.com/#search=getusermedia

您需要获取特定于浏览器的前缀并使用它。正如张贴在 :

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

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

由于 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);
}

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 */
  }
}

问题是

如果当前文档没有安全加载,navigator.mediaDevices 将是未定义的,您不能使用 getUserMedia()。有关此问题以及与使用 getUserMedia() 相关的其他安全问题的更多信息,请参阅安全性
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia

中给出

经过搜索,我得到了解决方案

尝试以下步骤:

  1. 打开Chrome浏览器,输入chrome://flags/#unsafely-treat-insecure-origin-as-secure 在 url.

  2. 添加主机/本地路径 url(例如 localhost/myproject 或 YOUR_HOSTNAME)

  3. Select 已启用.

  4. 重新启动 浏览器。