【问题标题】:Microphone to speaker stream (JS)麦克风到扬声器流 (JS)
【发布时间】:2014-08-11 23:51:56
【问题描述】:

我一直在使用 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 html html5-audio microphone web-audio-api


【解决方案1】:

getUserMedia 的 API 需要 3 个参数。

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

设 successCallback 为方法的第二个参数所指示的回调。

令 errorCallback 为方法的第三个参数所指示的回调。

参考mediacapture-stream spec

所以你需要做的就是添加第三个参数,它是一个错误回调。这样的事情会奏效。

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")});
};

可以参考this piece of code which does something similar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2012-02-07
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多