使用麦克风时静音输出声音 - Audio Web API
Muting sound output when using Mic - Audio Web API
我创建了一个 canvas 可视化效果,可以响应通过设备麦克风录制的声音。
一切都很好,但是麦克风拾取的所有声音都通过扬声器播放,我得到了可怕的反馈。
我试过设置 gainNode to 0
,但没用。
我知道我遗漏了什么,但我想不通。
这是我的代码。
let getSound = (stream) => {
const audioCtx = new AudioContext();
gainNode = audioCtx.createGain();
mic = audioCtx.createMediaStreamSource(stream);
mic.connect(gainNode);
gainNode.gain.value = 0;
analyser = audioCtx.createAnalyser();
analyser.fftSize = 512;
const bufferLength = analyser.frequencyBinCount;
const dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);
mic.connect(analyser);
analyser.connect(audioCtx.destination);
gainNode.connect(audioCtx.destination);
}
您制作的图表如下所示:
mic > gainNode > destination
mic > analyser > destination
如果你想用 gainNode 调平信号,你可以链接所有节点以得到这样的图表:
mic > analyser > gainNode > destination
但是正如您已经提到的,如果您只是对数据感兴趣,则分析器不必连接到目的地。因此下图应该有效:
mic > analyser
我创建了一个 canvas 可视化效果,可以响应通过设备麦克风录制的声音。
一切都很好,但是麦克风拾取的所有声音都通过扬声器播放,我得到了可怕的反馈。
我试过设置 gainNode to 0
,但没用。
我知道我遗漏了什么,但我想不通。
这是我的代码。
let getSound = (stream) => {
const audioCtx = new AudioContext();
gainNode = audioCtx.createGain();
mic = audioCtx.createMediaStreamSource(stream);
mic.connect(gainNode);
gainNode.gain.value = 0;
analyser = audioCtx.createAnalyser();
analyser.fftSize = 512;
const bufferLength = analyser.frequencyBinCount;
const dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);
mic.connect(analyser);
analyser.connect(audioCtx.destination);
gainNode.connect(audioCtx.destination);
}
您制作的图表如下所示:
mic > gainNode > destination
mic > analyser > destination
如果你想用 gainNode 调平信号,你可以链接所有节点以得到这样的图表:
mic > analyser > gainNode > destination
但是正如您已经提到的,如果您只是对数据感兴趣,则分析器不必连接到目的地。因此下图应该有效:
mic > analyser