在 javascript 中使用 mediaRecorder 录制麦克风时如何指定比特深度和采样率?

How to specify bit depth and sample rate when recording microphone using mediaRecorder in javascript?

一般来说,一张标准CD的时长为74分钟,采样率为44.1KHZ,左右双声道(立体声)。其容量可以使用以下公式计算:

(44100*16*2)/8*(74*60)=783216000bytes

16是位深的意思吗?

下面是我用来录音的代码片段。

const options = {
    mimeType: 'audio/webm;codecs=pcm',
    audioBitsPerSecond: 128
};
const recordedChunks = []
const mediaRecorder = new MediaRecorder(stream, options)
mediaRecorder.addEventListener('dataavailable', function (e) {
    if (e.data.size > 0) {
        recordedChunks.push(e.data)
    }
})
mediaRecorder.addEventListener('stop', function () {
    fileReader.readAsDataURL(new Blob(recordedChunks))
})
mediaRecorder.start()

搜索文档后,我没有找到位深度、通道和采样率选项。有什么想法吗?

您可以通过修改 MediaTrackConstraints 对象,然后将其应用于 MediaStreamTrack[ 来指定采样率、通道数和位深度=30=] 使用 MediaStreamTrack.applyConstraint(约束)。 MediaStreamTrack 应该可以通过进入 MediaRecorder.

MediaStream 访问

(等式中的 16 确实指的是 bit-depth)

(44100 个样本 * 16 个样本位 * 2 个音频通道) / 8 位/字节 *(74 分钟 * 60 秒/分钟)= 783216000 字节