浏览器端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, }); }