For all your async streaming MP3 encoding/decoding needs, there's node-lame!
This module hooks into libmp3lame, the library that the lame command uses, to
provide Encoder and Decoder streams to NodeJS.
node-lame comes bundled with its own copy of libmp3lame and libmpg123, so
there's no need to have them installed on your system.
Simply compile and install node-lame using npm:
$ npm install lameHere's an example of using node-lame to encode some raw PCM data coming from
process.stdin to an MP3 file that gets piped to process.stdout:
var lame = require('lame');
// create the Encoder instance
var encoder = new lame.Encoder({
// input
channels: 2, // 2 channels (left and right)
bitDepth: 16, // 16-bit samples
sampleRate: 44100, // 44,100 Hz sample rate
// output
bitRate: 128,
outSampleRate: 22050,
mode: lame.STEREO // STEREO (default), JOINTSTEREO, DUALCHANNEL or MONO
});
// raw PCM data from stdin gets piped into the encoder
process.stdin.pipe(encoder);
// the generated MP3 file gets piped to stdout
encoder.pipe(process.stdout);See the examples directory for some more example code.
The Decoder class is a Stream subclass that accepts MP3 data written to it,
and outputs raw PCM data. It also emits a "format" event when the format of
the MP3 file is determined (usually right at the beginning).
The Encoder class is a Stream subclass that accepts raw PCM data written to
it, and outputs a valid MP3 file. You must specify the PCM data format when
creating the encoder instance. Only 16-bit signed samples are currently
supported (rescale before passing to the encoder if necessary)...