如何在javascript中设置音频blob的编解码器,采样率和比特率?

Rav*_*dav 8 javascript audio audio-recording audio-streaming node.js

我刚刚创建了一个blob:

const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });
Run Code Online (Sandbox Code Playgroud)

并以base64格式将其发送到后端.我使用以下代码将其保存到名为"test.wav"的文件中:

await writeFile('./temp/test.wav', Buffer.from(filename.replace('data:audio/wav; codecs=0;base64,', ''), 'base64'), 'base64');
Run Code Online (Sandbox Code Playgroud)

在输出"test.wav"文件中,我得到编解码器为opus,bitrate = N/A,采样率= 48000.我想将这些值更改为codec = wav,bitrate = 256kbps,采样率= 16000.如何在节点(或角度)中实现它?

是我的前端代码的链接.

And*_*kyi 6

此行仅提供 MIME 信息但不影响实际输出

const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });
Run Code Online (Sandbox Code Playgroud)

要选择正确的音频编解码器和比特率,请使用以下选项开始录制

var options = {
  audioBitsPerSecond : 128000,
  mimeType : 'audio/ogg'
}
var mediaRecorder = new MediaRecorder(stream, options);
Run Code Online (Sandbox Code Playgroud)

据我所知,WebRTC 中默认支持 ogg 编解码器,因此它是跨浏览器兼容的

稍后,在后端,您需要ogg使用例如fluent-ffmpeg将音频流转换为您想要的任何其他内容