背景:麦克风双向录音,形成双通道(2 channel)
但是在谷歌浏览器(chrome内核)调用getUserMedia时解析stream时
getUserChannel(0)和getUserChannel(1)获得的音频流几乎一致,
没有区分左右声道。
解决办法:
getUserMedia中的audio配置!!!
设置echoCancellation: false即可!!!
代码如下:
const ac = new (window.AudioContext || window.webkitAudioContext)();
navigator.getUserMedia({
audio: {
echoCancellation: false // 关闭回波消除
},
video: false
}, stream => {
const mediaSource = ac.createMediaStreamSource(stream);
// const mediaSource = ac.createMediaElementSource(audio);
console.log(mediaSource);
// 创建一个用于通过JavaScript直接处理音频
const scriptProcessor = ac.createScriptProcessor(2048, 2, 2);
mediaSource.connect(ac.destination)
scriptProcessor.onaudioprocess = (evt) => {
// outputBuffer
const l = evt.inputBuffer.getChannelData(0); // 左
const r = evt.inputBuffer.getChannelData(1); // 右
}
})
参考代码:(需要自行设置audio的echoCancellation属性为false)
https://github.com/MuGuiLin/WebMediaAPI
网友评论