我正在尝试使用以下代码通过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中不起作用。令人困惑...
答案 0 :(得分:0)
在Chrome上添加scriptNode.connect(audioCtx.destination)
可以达到目的。仅当脚本节点实际连接到某种输出时,处理才开始。