mp3lame-encoder

Rust Crates.io Documentation

High level wrapper over mp3lame-sys

Example

```rust use mp3lame_encoder::{Builder, Id3Tag, DualPcm, FlushNoGap};

let mut mp3encoder = Builder::new().expect("Create LAME builder"); mp3encoder.setnumchannels(2).expect("set channels"); mp3encoder.setsamplerate(44100).expect("set sample rate"); mp3encoder.setbrate(mp3lameencoder::Birtate::Kbps192).expect("set brate"); mp3encoder.setquality(mp3lameencoder::Quality::Best).expect("set quality"); mp3encoder.setid3tag(Id3Tag { title: b"My title", artist: &[], album: b"My album", year: b"Current year", comment: b"Just my comment", }); let mut mp3encoder = mp3_encoder.build().expect("To initialize LAME encoder");

//use actual PCM data let input = DualPcm { left: &[0u16, 0], right: &[0u16, 0], };

let mut mp3outbuffer = Vec::new(); mp3outbuffer.reserve(mp3lameencoder::maxrequiredbuffersize(input.left.len())); let encodedsize = mp3encoder.encode(input, mp3outbuffer.sparecapacitymut()).expect("To encode"); unsafe { mp3outbuffer.setlen(mp3outbuffer.len().wrappingadd(encoded_size)); }

let encodedsize = mp3encoder.flush::(mp3outbuffer.sparecapacitymut()).expect("to flush"); unsafe { mp3outbuffer.setlen(mp3outbuffer.len().wrappingadd(encodedsize)); } //At this point your mp3out_buffer should have full MP3 data, ready to be written on file system or whatever

```

License

LAME library is under LGPL License. Hence this crate is licensed under the same shitty license