javascript - 麦克风到扬声器流 (JS)

标签 javascript html html5-audio microphone web-audio-api

我一直在研究 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. 

为什么它需要更多参数? 任何人都可以帮我解决这个问题吗?

谢谢。

最佳答案

getUserMedia 的 API 需要 3 个参数。

Let constraints be the method's first argument.

Let successCallback be the callback indicated by the method's second argument.

Let errorCallback be the callback indicated by the method's third argument.

引用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供引用。

关于javascript - 麦克风到扬声器流 (JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340531/

相关文章:

javascript - JS 切换类

javascript - 我可以扩展我的 nodejs 应用程序的最佳方式是什么?

html - URL 包含原始换行符的资源请求已弃用

css - <audio>与<track>的字幕,如何显示字幕

javascript - 如何在 Internet Explorer 中播放作品音频

javascript - 解析使用每个循环创建的 json 对象

javascript - Edge Animate 自定义百分比预加载器

javascript - 循环嵌套 JavaScript 对象和数组时出现问题

javascript - 弹出窗口使用自动单击打开同一窗口

angular - 以 Angular 转换 ogg 文件以在 Safari 中播放