use std::error::Error;
use unbundle::{AudioFormat, MediaFile};
fn main() -> Result<(), Box<dyn Error>> {
let input_path = std::env::args()
.nth(1)
.unwrap_or_else(|| "input.mp4".to_string());
println!("Opening {input_path}...");
let mut unbundler = MediaFile::open(&input_path)?;
let metadata = unbundler.metadata();
if let Some(audio_metadata) = &metadata.audio {
println!(
"Audio: {} Hz, {} channels, codec: {}, bit rate: {} bps",
audio_metadata.sample_rate,
audio_metadata.channels,
audio_metadata.codec,
audio_metadata.bit_rate,
);
}
println!("Extracting audio to output.wav...");
unbundler.audio().save("output.wav", AudioFormat::Wav)?;
println!("Saved output.wav");
println!("Extracting audio to memory...");
let audio_bytes = unbundler.audio().extract(AudioFormat::Wav)?;
println!("Extracted {} bytes of audio data", audio_bytes.len());
println!("Done!");
Ok(())
}