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

Download history 3012/week @ 2024-04-23 3460/week @ 2024-04-30 3474/week @ 2024-05-07 12596/week @ 2024-05-14 12573/week @ 2024-05-21 24897/week @ 2024-05-28 26885/week @ 2024-06-04 15471/week @ 2024-06-11 8960/week @ 2024-06-18 6799/week @ 2024-06-25 4856/week @ 2024-07-02 27586/week @ 2024-07-09 44847/week @ 2024-07-16 26603/week @ 2024-07-23 48434/week @ 2024-07-30 29072/week @ 2024-08-06

每月下载量 152,066
21 个Crate中使用(17个直接使用)

MIT许可证

310KB
9K SLoC

mp4

Rust语言的MP4读取和写入库 🦀

mp4 是一个用于读取和写入ISO-MP4文件的Rust库。此包包含定义在以下部分的MPEG-4规范

https://crates.io/crates/mp4

Crates.io Crates.io Docs Rust

示例

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中使用此库的参考。

许可证

MIT

依赖项

~1.5–2.5MB
~53K SLoC