麦克风到扬声器流(JS)

3

我一直在尝试使用HTML5,但是我无法完成以下操作。Javascript需要请求许可以访问麦克风,并且要将麦克风输入流式传输到计算机扬声器。以下是我拥有的Javascript代码:

navigator.getUserMedia = ( navigator.getUserMedia    || navigator.webkitGetUserMedia ||
                           navigator.mozGetUserMedia ||navigator.msGetUserMedia);
var aCtx;
var analyser;
var microphone;
if (navigator.getUserMedia) {
    navigator.getUserMedia({audio: true}, function(stream) {
        aCtx = new webkitAudioContext();
        analyser = aCtx.createAnalyser();
        microphone = aCtx.createMediaStreamSource(stream);
        microphone.connect(analyser);
        analyser.connect(aCtx.destination);
    });
};

但是Chrome(和Opera)说:
Uncaught TypeError: Failed to execute 'webkitGetUserMedia' on 'Navigator': 3 arguments required, but only 2 present. 

为什么需要更多的参数? 有谁可以帮我写这个javascript吗? 谢谢。

1
如果我没记错的话,应该是“错误回调函数”。在“选择媒体源”的部分,大约完成了50%:http://www.html5rocks.com/en/tutorials/getusermedia/intro/。 - Martijn
1
谷歌 MDN getUserMedia -> navigator.getUserMedia ( constraints, successCallback, errorCallback ); - Andreas Louv
1个回答

10

getUserMedia API需要3个参数。

让约束成为该方法的第一个参数。

让successCallback成为方法第二个参数指示的回调函数。

让errorCallback成为方法第三个参数指示的回调函数。

请参考mediacapture-stream规范,所以您只需要添加第三个参数,它是一个错误回调。类似这样的代码就可以了。

navigator.getUserMedia = ( navigator.getUserMedia    || navigator.webkitGetUserMedia ||
                       navigator.mozGetUserMedia ||navigator.msGetUserMedia);
var aCtx;
var analyser;
var microphone;
if (navigator.getUserMedia) {
    navigator.getUserMedia({audio: true}, function(stream) {
        aCtx = new webkitAudioContext();
        analyser = aCtx.createAnalyser();
        microphone = aCtx.createMediaStreamSource(stream);
        microphone.connect(analyser);
        analyser.connect(aCtx.destination);
    }, function (){console.warn("Error getting audio stream from getUserMedia")});
};

您可以参考这段代码,它做了类似的事情


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接