mirror of
https://github.com/alfg/mp4-rust.git
synced 2025-01-31 05:38:26 +00:00
🎥 MP4 reader and writer library in Rust! 🦀
3104a2d95b
* 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 * Move Mp4Reader to reader.rs * Add mandatory check when reading boxes Add some methods to Mp4Reader, TrackReader Format codes * Update mp4info * Refactor common types * Add FixedPointX types * Add media configuration, profile, ... * Add initial Mp4Writer * Run cargo fmt * Add Mp4Writer and examples/mp4copy * Add test codes for Avc1Box and Mp4aBox * Remove prefix "get_" from method names * Rename atoms to mp4box * Fix some bugs Co-authored-by: Byungwan Jun <unipro.kr@gmail.com> |
||
---|---|---|
.github/workflows | ||
examples | ||
src | ||
tests | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
LICENSE | ||
README.md |
mp4rs
MP4 Reader in Rust
ISO/IEC 14496-12 - ISO Base Media File Format (QuickTime, MPEG-4, etc)
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:
- https://github.com/mozilla/mp4parse-rust
- https://github.com/pcwalton/rust-media
- https://github.com/alfg/mp4
License
MIT