Crate mp3lame_encoder
source ·Expand description
High level wrapper over mp3lame-sys
§Example
use mp3lame_encoder::{Builder, Id3Tag, DualPcm, FlushNoGap};
let mut mp3_encoder = Builder::new().expect("Create LAME builder");
mp3_encoder.set_num_channels(2).expect("set channels");
mp3_encoder.set_sample_rate(44_100).expect("set sample rate");
mp3_encoder.set_brate(mp3lame_encoder::Bitrate::Kbps192).expect("set brate");
mp3_encoder.set_quality(mp3lame_encoder::Quality::Best).expect("set quality");
mp3_encoder.set_id3_tag(Id3Tag {
title: b"My title",
artist: &[],
album: b"My album",
album_art: &[],
year: b"Current year",
comment: b"Just my comment",
});
let mut mp3_encoder = mp3_encoder.build().expect("To initialize LAME encoder");
//use actual PCM data
let input = DualPcm {
left: &[0u16, 0],
right: &[0u16, 0],
};
let mut mp3_out_buffer = Vec::new();
mp3_out_buffer.reserve(mp3lame_encoder::max_required_buffer_size(input.left.len()));
let encoded_size = mp3_encoder.encode(input, mp3_out_buffer.spare_capacity_mut()).expect("To encode");
unsafe {
mp3_out_buffer.set_len(mp3_out_buffer.len().wrapping_add(encoded_size));
}
let encoded_size = mp3_encoder.flush::<FlushNoGap>(mp3_out_buffer.spare_capacity_mut()).expect("to flush");
unsafe {
mp3_out_buffer.set_len(mp3_out_buffer.len().wrapping_add(encoded_size));
}
//At this point your mp3_out_buffer should have full MP3 data, ready to be written on file system or whatever
Re-exports§
pub use Bitrate as Birtate;
pub use mp3lame_sys as ffi;
Structs§
- Builder of C LAME encoder.
- PCM data represented by two channels.
- LAME Encoder.
- Performs flush, padding gaps with 0
- Performs flush, padding it with ancillary data
- ID3 tag as raw bytes.
- PCM data in interleaved form
- PCM data with only 1 channel
Enums§
- Enumeration of valid values for
set_brate
- Encoder builder errors
- Encoder errors
- ID3 setter errors
- Possible modes for encoder
- Possible quality parameter. From best(0) to worst(9)
- Possible VBR types
Constants§
- Maximum size of album art
Traits§
- Flush method.
- Type of PCM input for encoder
Functions§
- Creates default encoder with 192kbps bitrate and best possible quality.
- Calculates maximum required size for specified number of samples.