1. 首页 >音视频流媒体 >webrtc >

webrtc浏览器端设置回声消除

浏览器端webrtc音视频通话中获取音频轨时启用回声消除设置

function openCamera(cameraId, minWidth, minHeight) {
    const constraints = {
        'audio': {'echoCancellation': true},
        'video': {
            'deviceId': cameraId,
            'width': {'min': minWidth},
            'height': {'min': minHeight}
            }
        }

    return await navigator.mediaDevices.getUserMedia(constraints);
}

主要是 audio中 echoCancellation 参数设置为 true


const audioTrack = await navigator.mediaDevices.getUserMedia({ audio: true });
const sender = pc.addTrack(audioTrack);
 
sender.track.applyConstraints({
  echoCancellation: true,
  noiseSuppression: true,
  // 更多音频处理设置
});

第三方库

import { initNoiseSuppression } from 'noise-suppression-wasm';
 
async function setupNoiseSuppression() {
  await initNoiseSuppression();
  const audioContext = new AudioContext();
  const source = audioContext.createMediaStreamSource(stream); // stream是getUserMedia得到的流
  const destination = audioContext.createMediaStreamDestination();
  source.connect(destination);
  // 应用噪声抑制
  destination.stream.getAudioTracks()[0].applyConstraints({
    googEchoCancellation: true,
    googAutoGainControl: true,
    googNoiseSuppression: true,
    googHighpassFilter: true,
  });
}