JSPM

nampg123

1.2.4
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 54
  • Score
    100M100P100Q66471F
  • License MIT

node.js addon & native bindings to libmpg123.

Package Exports

  • nampg123

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (nampg123) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

node-addon-mpg123

node.js addon & native bindings to libmpg123

Build Status

node-addon-mpg123 is based on TooTallNate/node-lame and removed lame related code to keep it simple. And extended the Decoder to support decoding format options.

For all your async streaming MP3 decoding needs, there's node-addon-mpg123! This module hooks into libmpg123, the library that the mpg123 command uses, to provide Decoder streams to node.js.

Installation

node-addon-mpg123 comes bundled with its own copy of libmpg123, so there's no need to have them installed on your system.

Simply compile and install nampg123 using npm:

$ npm install nampg123

Example

Here's an example of using node-addon-mpg123 to decode an MP3 file coming from process.stdin to some raw PCM data that gets piped to process.stdout:

const mpg123 = require('nampg123');

// create the Decoder instance
const decoder = new mpg123.Decoder();

// MP3 data from stdin gets piped into the decoder
process.stdin.pipe(decoder);

// the raw PCM data gets piped to stdout
decoder.pipe(process.stdout);

See test/decoder.js for some more example code.

API

Decoder class

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). You can specify the output PCM data format when creating the decoder instance.

const mpg123 = require('nampg123');
const decoder = new mpg123.Decoder({
  sampleRate: 44100,        // [8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000]
  channels: mpg123.STEREO,  // [mpg123.MONO, mpg123.STEREO, mpg123.MONO | mpg123.STEREO]
  signed: false,            // [true, false]
  float: true,              // [true, false]
  bitDepth: 32,             // [8, 16, 24, 32]
});

⚠️ The channels option is different from the TooTallNate/node-lame encoder.

See more about mpg123 encoding formats: https://github.com/mdluo/node-addon-mpg123/blob/master/deps/mpg123/src/libmpg123/mpg123.h.in#L348-L395