Dart native bindings to LAME (MP3 encoder)


  • Encode WAV (PCM-16 or PCM IEEE Double) to MP3

Getting started

To use this library, you must have libmp3lame installed on your system. Please make sure the following library is available on your system or place it under your program's working directory.

  • Windows: mp3lame.dll
  • Linux: libmp3lame.so
  • macOS: libmp3lame.dylib

Alternatively, you can manually load libmp3lame:

import 'dart:ffi' as ffi;
import 'package:dart_lame/dart_lame.dart' as lame;

class CustomLoader extends lame.LameLibraryLoader {
  ffi.DynamicLibrary load() {
    return ffi.DynamicLibrary.open("path_to_libmp3lame");

lame.lameLoader = CustomLoader(); 

For Flutter user, please use flutter_lame instead.


final File f = File("output.mp3");
final IOSink sink = f.openWrite();
final LameMp3Encoder encoder = LameMp3Encoder(sampleRate: 44100, numChannels: 2);

Float64List leftChannelSamples;
Float64List rightChannelSamples;
// Get samples from file or from microphone.

final mp3Frame = await encoder.encode(
  leftChannel: leftChannelSamples,
  rightChannel: rightChannelSamples);
// continue until all samples have been encoded

// finally, flush encoder buffer
final lastMp3Frame = await encoder.flush();

For a complete example, please go to /example folder.


Support for doing something awesome.