Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

mdluo/node-addon-mpg123

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

306 Commits
306 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-addon-mpg123

node.js addon & native bindings to libmpg123

npm 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 i 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

About

node.js addon & native bindings to libmpg123.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.