2020-02-04 05:52:23 +00:00
|
|
|
# mp4rs
|
|
|
|
> MP4 Reader in Rust
|
|
|
|
|
|
|
|
ISO/IEC 14496-12 - ISO Base Media File Format (QuickTime, MPEG-4, etc)
|
|
|
|
|
2020-02-04 05:56:55 +00:00
|
|
|
[![Crates.io](https://img.shields.io/crates/v/mp4)](https://crates.io/crates/mp4)
|
|
|
|
[![Crates.io](https://img.shields.io/crates/d/mp4)](https://crates.io/crates/mp4)
|
2020-07-26 03:07:39 +00:00
|
|
|
[![Build Status](https://travis-ci.org/alfg/mp4rs.svg?branch=master)](https://travis-ci.org/alfg/mp4rs)
|
|
|
|
![Rust](https://github.com/alfg/mp4rs/workflows/Rust/badge.svg)
|
|
|
|
|
|
|
|
#### Example
|
|
|
|
```rust
|
|
|
|
use mp4;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let f = File::open("example.mp4").unwrap();
|
2020-07-31 17:18:06 +00:00
|
|
|
let size = f.metadata()?.len();
|
|
|
|
let reader = BufReader::new(f);
|
2020-07-26 03:07:39 +00:00
|
|
|
|
2020-07-31 17:18:06 +00:00
|
|
|
let mut mp4 = Mp4Reader::new(reader);
|
|
|
|
mp4.read(size)?;
|
2020-07-26 03:07:39 +00:00
|
|
|
|
2020-07-31 17:18:06 +00:00
|
|
|
println!("size: {}", mp4.size());
|
|
|
|
println!("brands: {:?} {:?}\n", mp4.ftyp.major_brand, mp4.ftyp.compatible_brands);
|
2020-07-26 03:07:39 +00:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
See [examples/](examples/) for a full example.
|
|
|
|
|
|
|
|
#### Documentation
|
|
|
|
* https://docs.rs/mp4/
|
2020-01-08 06:53:15 +00:00
|
|
|
|
2020-01-13 03:33:26 +00:00
|
|
|
## Development
|
|
|
|
|
|
|
|
#### Requirements
|
|
|
|
* [Rust](https://www.rust-lang.org/)
|
|
|
|
|
|
|
|
#### Build
|
2020-01-08 06:53:15 +00:00
|
|
|
```
|
|
|
|
cargo build
|
2020-01-13 03:33:26 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
#### Run Examples
|
|
|
|
* `mp4info`
|
|
|
|
```
|
|
|
|
cargo run --example mp4info <movie.mp4>
|
2020-01-08 06:53:15 +00:00
|
|
|
```
|
2020-02-04 05:52:23 +00:00
|
|
|
|
2020-07-26 03:07:39 +00:00
|
|
|
#### Run Tests
|
|
|
|
```
|
|
|
|
cargo test
|
|
|
|
```
|
|
|
|
|
|
|
|
With print statement output.
|
|
|
|
```
|
|
|
|
cargo test -- --nocapture
|
|
|
|
```
|
|
|
|
|
2020-02-04 05:52:23 +00:00
|
|
|
## Resources
|
|
|
|
Thanks to the following resources used when learning Rust:
|
|
|
|
* https://github.com/mozilla/mp4parse-rust
|
|
|
|
* https://github.com/pcwalton/rust-media
|
|
|
|
* https://github.com/alfg/mp4
|
|
|
|
|
|
|
|
## License
|
|
|
|
MIT
|