Как записать mp3 с Raspberry Pi с микрофонного входа - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь записать MP3-вход микрофона моего Raspberry Pi. Я использую модуль npm mic. Когда я запускаю его на своем Mac, у меня нет проблем, и он записывает мою линию со звуковой карты USB в формате MP3. Когда я беру тот же код и помещаю его в Raspberry Pi, он не работает. Я вижу, что он создает файл с именем 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();
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...