我正在尝试在 React Web 应用程序中设置一个录音机来录制一大群人(15 岁以上)的谈话,但似乎无法获得正确的录音质量。我最初尝试通过将以下约束传递给 getUserMedia 来捕获录音:
const constraints = {
audio: {
sampleRate: 48000,
channelCount: 1,
volume: 1.0,
echoCancellation: true,
noiseSuppression: true,
},
video: false
}
navigator.mediaDevices.getUserMedia(constraints)
.then( stream => {
this.processStream(stream);
})
processStream = stream => {
let options = MediaRecorder.isTypeSupported('audio/webm') ? {
mimeType: 'audio/webm'
} : {};
let recorder = new MediaRecorder(stream, options);
...
}
对于大多数录音,录音质量都很好。然而,有时录音会以这种非常糟糕的、失真的、几乎金属声音的质量结束。我一直无法弄清楚如何重现效果(我已经开始捕获用户的浏览器,试图帮助调试这个问题)。
大约一周前,我使用约束 = { audio: true, video: false } 部署了应用程序,但这有时也会产生质量略有失真的录音。到目前为止,没有一个录音像以前的一些录音那么糟糕,但质量仍然不是我们想要的。
今天,我将约束设置为:
const constraints = {
audio: {
echoCancellation: false,
autoGainControl: false,
noiseCancellation: false
},
video: false
}
但我怀疑这将是获得高质量录音的神奇门票,我开始认为也许我应该放弃 MediaRecorder 以换取其他东西。有没有人对 1)问题是什么和 2)我们如何解决它有想法?
谢谢!