如何用麦克风输入的Raspberry Pi录制mp3

时间:2019-01-13 00:46:48

标签: node.js npm raspberry-pi mp3 lame

我正在尝试录制我的树莓派麦克风输入的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();
...

0 个答案:

没有答案