在NodeJS中将Raw转换为Wav Streams

时间:2018-01-16 21:50:51

标签: c++ node.js audio portaudio

我正在使用nodeJS库naudio - link - 来录制来自2个麦克风的声音(总共4声道音频,每个麦克风都是立体声)。此库在以下规范中吐出.raw文件:16 BIT, 48000Hz Sample Rate, Channel Count 4

// var portAudio = require('../index.js');
var portAudio = require('naudiodon');
var fs = require('fs');

//Create a new instance of Audio Input, which is a ReadableStream
var ai = new portAudio.AudioInput({
  channelCount: 4,
  sampleFormat: portAudio.SampleFormat16Bit,
  sampleRate: 48000,
  deviceId: 13
});

ai.on('error', console.error);

//Create a write stream to write out to a raw audio file
var ws = fs.createWriteStream('rawAudio_final.raw');

//Start streaming
ai.pipe(ws);
ai.start();

process.once('SIGINT', ai.quit);

我尝试将此转换为两个单独的.raw文件,而不是.wav文件。有了上面的编码和信息,最好的方法是什么?我试图四处寻找解除交织和获取.wav的简单方法,但似乎正在撞墙。

2 个答案:

答案 0 :(得分:6)

addon是一个名为portaudio的C ++库的包装器,它根据documentation支持写入WAV文件。

您可以做的是扩展插件并将NodeJS函数绑定到写入WAV的基础C ++函数。 如果这是一个问题,这将为您提供良好的表现。

如果您想要更轻松的事情,可以查找执行转换的实用程序,并使用ex之类的Yarn Workspaces在您的脚本中调用它们,如this

答案 1 :(得分:0)

看起来与此question类似。

您也可以查看here以了解如何从javascript创建wav文件。