rsmediainfo 0.2.0

Rust wrapper for MediaInfo library
//! Example that parses a media file from an already-open file handle.
//!
//! Use this approach when you have a `Read + Seek` source you want to feed
//! the parser directly, instead of letting it open a path on your behalf.
//! Wrapping the file in `BufReader` keeps the buffer-protocol read loop
//! efficient on slow I/O.
//!
//! Run with:
//!
//! ```text
//! cargo run --example parse_reader -- tests/data/sample.mp4
//! ```

use rsmediainfo::MediaInfo;
use std::env;
use std::fs::File;
use std::io::BufReader;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut args = env::args().skip(1);
    let path = args.next().ok_or("usage: parse_reader <media_path>")?;

    let file = File::open(&path)?;
    let mut reader = BufReader::new(file);
    let mi = MediaInfo::parse_media_info(&mut reader)?;

    println!("Parsed {} tracks from {path}", mi.tracks().len());
    for track in mi.tracks() {
        println!("  {} track", track.track_type());
    }

    Ok(())
}