26个版本 (13个重大更新)
0.14.0 | 2023年8月1日 |
---|---|
0.13.0 | 2023年2月2日 |
0.12.0 | 2022年7月30日 |
0.10.0 | 2022年3月26日 |
0.4.0 | 2020年2月6日 |
在 视频 中排名 9
每月下载量 152,066
在 21 个Crate中使用(17个直接使用)
310KB
9K SLoC
mp4
Rust语言的MP4读取和写入库 🦀
mp4
是一个用于读取和写入ISO-MP4文件的Rust库。此包包含定义在以下部分的MPEG-4规范
- ISO/IEC 14496-12 - ISO基本媒体文件格式(QuickTime、MPEG-4等)
- ISO/IEC 14496-14 - MP4文件格式
- ISO/IEC 14496-17 - 流式文本格式
示例
use std::fs::File;
use std::io::{BufReader};
use mp4::{Result};
fn main() -> Result<()> {
let f = File::open("tests/samples/minimal.mp4").unwrap();
let size = f.metadata()?.len();
let reader = BufReader::new(f);
let mp4 = mp4::Mp4Reader::read_header(reader, size)?;
// Print boxes.
println!("major brand: {}", mp4.ftyp.major_brand);
println!("timescale: {}", mp4.moov.mvhd.timescale);
// Use available methods.
println!("size: {}", mp4.size());
let mut compatible_brands = String::new();
for brand in mp4.compatible_brands().iter() {
compatible_brands.push_str(&brand.to_string());
compatible_brands.push_str(",");
}
println!("compatible brands: {}", compatible_brands);
println!("duration: {:?}", mp4.duration());
// Track info.
for track in mp4.tracks().values() {
println!(
"track: #{}({}) {} : {}",
track.track_id(),
track.language(),
track.track_type()?,
track.box_type()?,
);
}
Ok(())
}
更多示例,请参阅 examples/
安装
cargo add mp4
或将其添加到您的 Cargo.toml
mp4 = "0.14.0"
文档
开发
需求
构建
cargo build
检查和格式化
cargo clippy --fix
cargo fmt --all
运行示例
mp4info
cargo run --example mp4info <movie.mp4>
mp4dump
cargo run --example mp4dump <movie.mp4>
运行测试
cargo test
带有打印语句输出。
cargo test -- --nocapture
运行Cargo fmt
运行fmt以捕获格式化错误。
rustup component add rustfmt
cargo fmt --all -- --check
运行Clippy
运行Clippy测试以捕获常见的检查和错误。
rustup component add clippy
cargo clippy --no-deps -- -D warnings
运行基准测试
cargo bench
在 target/criterion/report/index.html
查看HTML报告
生成文档
cargo docs
在 target/doc/mp4/index.html
查看文档
Web Assembly
请参阅 mp4-inspector 项目,了解如何通过Web Assembly在JavaScript中使用此库的参考。
相关项目
- https://github.com/mozilla/mp4parse-rust
- https://github.com/pcwalton/rust-media
- https://github.com/alfg/mp4
许可证
MIT
依赖项
~1.5–2.5MB
~53K SLoC