chrome音频录制麦克风双声道,输出只有单声道的问题

2023-12-25  本文已影响0人  ICEcream_jie

背景:麦克风双向录音,形成双通道(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

上一篇下一篇

猜你喜欢

热点阅读