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

如何在javascript中设置音频块的编解码器、采样器和比特率?,javascript,node.js,audio,audio-streaming,audio-recording,Javascript,Node.js,Audio,Audio Streaming,Audio Recording,我刚刚创建了一个blob: const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' }); 并以base64格式发送到后端。我使用以下代码将其保存到名为“test.wav”的文件中: await writeFile('./temp/test.wav', Buffer.from(filename.replace('data:audio/wav; codecs=0;base64,', ''), 'base64

我刚刚创建了一个blob:

const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });
并以base64格式发送到后端。我使用以下代码将其保存到名为“test.wav”的文件中:

await writeFile('./temp/test.wav', Buffer.from(filename.replace('data:audio/wav; codecs=0;base64,', ''), 'base64'), 'base64');
在输出的“test.wav”文件中,我得到的编解码器是opus,比特率=N/A,采样率=48000。我想将这些值更改为codec=wav、比特率=256kbps和采样率=16000。如何在节点(或角度)中实现它


是我的前端代码的链接。

此行只提供mime信息,但不影响实际输出

const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });
要选择正确的音频编解码器和比特率,请使用以下选项开始录制

var options = {
  audioBitsPerSecond : 128000,
  mimeType : 'audio/ogg'
}
var mediaRecorder = new MediaRecorder(stream, options);
据我所知,在WebRTC中默认支持ogg编解码器,因此它是跨浏览器兼容的


稍后,在后端,您需要将
ogg
音频流转换为您想要使用的任何其他内容,例如在16kHz未压缩WAV音频上不能有256kbps比特率。假设单声道和16位采样(通常),您的比特率将为16000采样/秒*2字节/采样=32000字节/秒。无论如何,请向我们展示更多代码;
audiochunk
从何而来?@AKX刚刚在stackblitz上添加了前端代码链接。您需要查看录音机的
mimeType
属性。您不能仅仅假设在
dataavailable
回调中获得的数据块可以解释为PCM WAV,并创建具有该类型的blob。例如,我看到
audio/webm;codecs=opus
,即WebM容器中的opus。一旦你有了已知格式的数据,你就可以使用转码器(如ffmpeg)将其转换为另一种格式。我应该使用哪种mimetype来获得wav输出而不是opus输出?据称,音频/wav或音频/x-wav不受支持。