【发布时间】:2019-04-29 05:45:23
【问题描述】:
我刚刚创建了一个 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、bitrate=256kbps 和 sample rate=16000。如何在节点(或角度)中实现它?
Here 是我的前端代码的链接。
【问题讨论】:
-
您不能在 16kHz 未压缩 WAV 音频上获得 256kbps 比特率。假设单声道和 16 位样本(通常),您的比特率将是 16000 样本/秒 * 2 字节/样本 = 32000 字节/秒。
-
无论如何,请向我们展示更多代码;
audioChunks来自哪里? -
@AKX 刚刚在 stackblitz 上添加了前端代码的链接
-
你需要查看AudioRecorder的
mimeType属性。您不能仅仅假设您在dataavailable回调中获得的数据块可以解释为 PCM WAV,并创建具有该类型的 blob。例如,我看到audio/webm;codecs=opus,即 WebM 容器中的 OPUS。一旦你有了众所周知格式的数据,你就可以使用 ffmpeg 之类的转码器将其转换为另一种格式。 -
我应该使用哪种 mimetype 来获得 wav 输出而不是 opus?它说不支持 audio/wav 或 audio/x-wav。
标签: javascript node.js audio audio-streaming audio-recording