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