1
0
Fork 0
mirror of https://github.com/alfg/mp4-rust.git synced 2024-05-19 16:58:04 +00:00
🎥 MP4 reader and writer library in Rust! 🦀
Go to file
Ian Jun 0abb242037
Refactoring (#17)
* Add ReadBox trait

* Add boxtype macro

* Remove offset in BoxHeader

* Fix parsing error when box has largesize

* Remove duplicated codes reading version and flags

* Update examples

* Fix test failure

* Rename I/O position moving functions

* skip_read() to skip_bytes()
* skip_read_to() to skip_bytes_to()
* skip_write() to write_zeros()

* Rename I/O position moving functions

* skip_read() to skip_bytes()
* skip_read_to() to skip_bytes_to()

* Ensure skip_bytes() does not go back.

Co-authored-by: Byungwan Jun <unipro.kr@gmail.com>
2020-08-06 20:35:08 -07:00
.github/workflows Create rust.yml 2020-07-24 20:00:09 -07:00
examples Update examples (#16) 2020-08-05 23:00:53 -07:00
src Refactoring (#17) 2020-08-06 20:35:08 -07:00
tests Update examples (#16) 2020-08-05 23:00:53 -07:00
.gitignore Remove Cargo.lock and add to .gitignore. 2020-07-28 22:13:15 -07:00
.travis.yml Add basic integration test (#10) 2020-07-25 20:07:39 -07:00
Cargo.toml Feature/mp4reader (#13) 2020-07-31 10:12:26 -07:00
LICENSE Change main.rs to lib.rs and create example mp4info project. Update readme and license. 2020-01-12 19:33:26 -08:00
README.md Update example in README.md. 2020-07-31 10:18:06 -07:00

mp4rs

MP4 Reader in Rust

ISO/IEC 14496-12 - ISO Base Media File Format (QuickTime, MPEG-4, etc)

Crates.io Crates.io Build Status Rust

Example

use mp4;

fn main() {
    let f = File::open("example.mp4").unwrap();
    let size = f.metadata()?.len();
    let reader = BufReader::new(f);

    let mut mp4 = Mp4Reader::new(reader);
    mp4.read(size)?;

    println!("size: {}", mp4.size());
    println!("brands: {:?} {:?}\n", mp4.ftyp.major_brand, mp4.ftyp.compatible_brands);
}

See examples/ for a full example.

Documentation

Development

Requirements

Build

cargo build

Run Examples

  • mp4info
cargo run --example mp4info <movie.mp4>

Run Tests

cargo test

With print statement output.

cargo test -- --nocapture

Resources

Thanks to the following resources used when learning Rust:

License

MIT