Skip to content

BestOwl/dart_lame

Repository files navigation

Dart native bindings to LAME (MP3 encoder)

Features

  • 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 {
  @override
  ffi.DynamicLibrary load() {
    return ffi.DynamicLibrary.open("path_to_libmp3lame");
  }
}

lame.lameLoader = CustomLoader(); 

For Flutter user, please use flutter_lame instead.

Usage

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);
sink.add(mp3Frame);
// continue until all samples have been encoded

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

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

About

Dart native bindings to LAME (MP3 encoder)

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages