我正在尝试录制我的树莓派麦克风输入的MP3。我正在使用npm模块mic
。当我在Mac上运行它时,我没有问题,它将USB声卡中的线路记录为MP3。当我使用相同的代码并将其放在树莓派上时,它不起作用。我看到它制作了一个名为output.mp3
的文件,但是当我通过FTP将其尝试在Mac上播放时,它将无法播放。
代码的主要部分是:
var mic = require('mic');
var fs = require('fs');
var micInstance = mic({
rate: '16000',
channels: '1',
debug: true,
exitOnSilence: 6,
fileType: 'mp3'
});
var micInputStream = micInstance.getAudioStream();
var outputFileStream = fs.WriteStream('output.mp3');
micInputStream.pipe(outputFileStream);
micInputStream.on('data', function(data) {
console.log("Recieved Input Stream: " + data.length);
});
micInputStream.on('error', function(err) {
cosole.log("Error in Input Stream: " + err);
});
我应该注意,如果我将文件另存为.raw文件,可以使用
aplay -f S16_LE -r 16000 -c 1 output.raw
我试图console.log npm模块正在使用的实际命令,这就是我得到的:
arecord [ '-c', '1', 'r', '16000', '-f', 'S16_LE', '-D', 'plughw:1,0' ] { stdio: [ 'ignore', 'pipe', 'pipe' ] }
关于如何成功将其记录为MP3的任何想法?
我最终希望将其发送到MP3,以便可以通过npm lame
解码器运行它并对其进行一些处理。
以下代码可在我的Mac上运行:
...
var decoder = new Lame.Decoder();
decoder.on('format', function(format){onFormat(format)});
var chunker = Chunker(BUFSIZE);
chunker.pipe(decoder);
var micInstance = mic({
rate: '48000',
channels: '1',
debug: false,
exitOnSilence: 6,
fileType: 'mp3'
});
var micInputStream = micInstance.getAudioStream();
micInputStream.pipe(chunker);
micInstance.start();
...