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 0df82aec5f
Feature/mp4reader (#13)
* Add ReadBox trait

* Add boxtype macro

* Remove offset in BoxHeader

* Fix parsing error when box has largesize

* Remove duplicated codes reading version and flags

* Add avc1 box

* Add mp4a box

* Add mp4a box

* Add DecoderSpecificDescriptor in esds box

* Add necessary sub-boxes to stbl box

* Improve ReadBox::read_box()

* Add smhd box

* Refactor BoxHeader

* Refactor BMFF

* Refactor

* Add some functions to get offset and size of sample

* Add Mp4Reader::read_sample() that read media samples

Co-authored-by: Byungwan Jun <unipro.kr@gmail.com>
2020-07-31 10:12:26 -07:00
.github/workflows Create rust.yml 2020-07-24 20:00:09 -07:00
examples Feature/mp4reader (#13) 2020-07-31 10:12:26 -07:00
src Feature/mp4reader (#13) 2020-07-31 10:12:26 -07:00
tests Feature/mp4reader (#13) 2020-07-31 10:12:26 -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 Add basic integration test (#10) 2020-07-25 20:07:39 -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 bmff = mp4::read_mp4(f).unwrap();

    println!("file size:  {}", bmff.size);
    println!("brands: {:?} {:?}\n",
        bmff.ftyp.major_brand, bmff.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