处理Web Audio API的麦克风音频样本

时间:2018-07-03 22:51:54

标签: web-audio web-audio-api

我正在尝试使用以下代码通过Web Audio获取麦克风的音频样本:

<!doctype html>
<html>
<meta charset="utf-8">
<body>
<script>
    function start() {
        let button = document.getElementById("start");
        button.disabled = true;

        let audioCtx = new (window.AudioContext || window.webkitAudioContext)();
        navigator.mediaDevices.getUserMedia({
            audio: {
                echoCancellation: false,
                noiseSuppression: false,
                autoGainControl: false,
            }
        }).then(function (stream) {
            let audioSource = audioCtx.createMediaStreamSource(stream);
            let scriptNode = audioCtx.createScriptProcessor(4096, 1, 0);
            scriptNode.onaudioprocess = function (audioProcessingEvent) {
                console.log('foo!');
            };
            audioSource.connect(scriptNode);

        }).catch(function (err) {
            console.log('Error initializing user media stream: ' + err);
        });
    }    
</script>

<button id="start" onclick="start()">Start</button>

</body>
</html>

无论出于何种原因,它不会不断输出“ foo!”。在控制台中。我想念什么?

编辑:它在Firefox中有效,但在Chrome中不起作用。令人困惑...

1 个答案:

答案 0 :(得分:0)

在Chrome上添加scriptNode.connect(audioCtx.destination)可以达到目的。仅当脚本节点实际连接到某种输出时,处理才开始。