// the find
TooTallNate/node-lame
Node.js native bindings to libmp3lame & libmpg123
Native Node.js bindings to libmp3lame and libmpg123, exposing them as streaming Encoder and Decoder classes. It's for anyone who needs to encode PCM to MP3 or decode MP3 to PCM inside a Node.js process without shelling out to ffmpeg. Bundles the C libraries so you don't need system deps.
Streams-based API fits naturally into Node.js pipelines — pipe in, pipe out, done. Bundling libmp3lame and libmpg123 as vendored deps removes the 'install lame first' setup friction that kills native modules for half your team. The format event on the Decoder that fires when MP3 header info is parsed is a small but useful detail. Last commit in 2024 despite being a decade-old project means someone is still keeping it alive against Node ABI churn.
Only 16-bit signed PCM is supported on encode; if your audio pipeline produces 24-bit or float samples you're rescaling yourself, which the README mentions almost as an afterthought. No TypeScript types shipped or maintained separately, so you're writing your own stubs. The bundled libmp3lame is a vendored copy frozen at a specific version — you can't pick up upstream bug fixes without a PR to this repo. Travis CI badge is dead and there's no modern CI, so you have no idea if it actually builds on current Node LTS without trying it yourself.