Firefox:navigator.getUserMedia不是一个函数

问题描述 投票:9回答:3

我正在玩浏览器和音频。

我这样做

        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上类似:

未捕获的TypeError:undefined不是函数

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

我究竟做错了什么?

javascript firefox html5-audio
3个回答
31
投票

它尚未被支持。见http://caniuse.com/#search=getusermedia

您需要获取特定于浏览器的前缀并使用它。发布于another answer

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

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


11
投票

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

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

它不是那么受支持 - 你需要浏览器前缀。


7
投票

由于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);
}
© www.soinside.com 2019 - 2024. All rights reserved.