我正在玩浏览器和音频。
我这样做
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
我究竟做错了什么?
它尚未被支持。见http://caniuse.com/#search=getusermedia
您需要获取特定于浏览器的前缀并使用它。发布于another answer:
navigator.getUserMedia = ( navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
这将把navigator.getUserMedia
设置为它检测到的任何正确的前缀版本。
检查MDN page,尤其是第一个例子的第一部分:
navigator.getUserMedia = ( navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
它不是那么受支持 - 你需要浏览器前缀。
由于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);
}