mp4forge 0.8.0

Rust library and CLI for inspecting, probing, extracting, muxing, and rewriting MP4 structures
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.88"
name = "mp4forge"
version = "0.8.0"
authors = ["bakgio"]
build = false
exclude = [
    ".github/**",
    "fuzz/**",
    "tests/**",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Rust library and CLI for inspecting, probing, extracting, muxing, and rewriting MP4 structures"
readme = "README.md"
keywords = [
    "mp4",
    "isobmff",
    "parser",
    "video",
    "cli",
]
categories = [
    "command-line-utilities",
    "multimedia::video",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/bakgio/mp4forge"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[features]
async = ["dep:tokio"]
decrypt = ["dep:aes"]
default = []
mux = []
serde = ["dep:serde"]

[lib]
name = "mp4forge"
path = "src/lib.rs"

[[bin]]
name = "mp4forge"
path = "src/bin/mp4forge.rs"

[[example]]
name = "decrypt_file"
path = "examples/decrypt_file.rs"

[[example]]
name = "dump_selected_paths"
path = "examples/dump_selected_paths.rs"

[[example]]
name = "dump_structured_fields"
path = "examples/dump_structured_fields.rs"

[[example]]
name = "edit_emsg"
path = "examples/edit_emsg.rs"

[[example]]
name = "extract_mdhd_bytes"
path = "examples/extract_mdhd_bytes.rs"

[[example]]
name = "extract_track_ids"
path = "examples/extract_track_ids.rs"

[[example]]
name = "extract_track_ids_typed"
path = "examples/extract_track_ids_typed.rs"

[[example]]
name = "extract_track_ids_typed_bytes"
path = "examples/extract_track_ids_typed_bytes.rs"

[[example]]
name = "extract_track_ids_typed_parsed_path"
path = "examples/extract_track_ids_typed_parsed_path.rs"

[[example]]
name = "inspect_mux_boundaries"
path = "examples/inspect_mux_boundaries.rs"

[[example]]
name = "mux_fragment_duration"
path = "examples/mux_fragment_duration.rs"

[[example]]
name = "mux_raw_tracks"
path = "examples/mux_raw_tracks.rs"

[[example]]
name = "mux_segment_duration"
path = "examples/mux_segment_duration.rs"

[[example]]
name = "mux_subtitle_tracks"
path = "examples/mux_subtitle_tracks.rs"

[[example]]
name = "mux_tracks"
path = "examples/mux_tracks.rs"

[[example]]
name = "mux_tracks_async"
path = "examples/mux_tracks_async.rs"

[[example]]
name = "plan_mux_payload"
path = "examples/plan_mux_payload.rs"

[[example]]
name = "probe_async"
path = "examples/probe_async.rs"

[[example]]
name = "probe_codec_details"
path = "examples/probe_codec_details.rs"

[[example]]
name = "probe_extended_media_characteristics"
path = "examples/probe_extended_media_characteristics.rs"

[[example]]
name = "probe_lightweight"
path = "examples/probe_lightweight.rs"

[[example]]
name = "probe_media_characteristics"
path = "examples/probe_media_characteristics.rs"

[[example]]
name = "probe_track_count"
path = "examples/probe_track_count.rs"

[[example]]
name = "probe_track_count_bytes"
path = "examples/probe_track_count_bytes.rs"

[[example]]
name = "pssh_report"
path = "examples/pssh_report.rs"

[[example]]
name = "pssh_report_filtered"
path = "examples/pssh_report_filtered.rs"

[[example]]
name = "read_planned_samples"
path = "examples/read_planned_samples.rs"

[[example]]
name = "read_planned_track_metadata"
path = "examples/read_planned_track_metadata.rs"

[[example]]
name = "read_structure"
path = "examples/read_structure.rs"

[[example]]
name = "refresh_top_level_sidx"
path = "examples/refresh_top_level_sidx.rs"

[[example]]
name = "register_custom_box"
path = "examples/register_custom_box.rs"

[[example]]
name = "resolve_sample_encryption"
path = "examples/resolve_sample_encryption.rs"

[[example]]
name = "rewrite_annex_b_samples"
path = "examples/rewrite_annex_b_samples.rs"

[[example]]
name = "rewrite_emsg"
path = "examples/rewrite_emsg.rs"

[[example]]
name = "rewrite_emsg_bytes"
path = "examples/rewrite_emsg_bytes.rs"

[[example]]
name = "validate_divide_layout"
path = "examples/validate_divide_layout.rs"

[[example]]
name = "write_mp4_mux"
path = "examples/write_mp4_mux.rs"

[dependencies.aes]
version = "0.8"
optional = true

[dependencies.miniz_oxide]
version = "0.8"

[dependencies.serde]
version = "1"
features = ["derive"]
optional = true

[dependencies.terminal_size]
version = "0.4"

[dependencies.tokio]
version = "1.52.1"
features = [
    "fs",
    "io-util",
    "rt",
    "rt-multi-thread",
    "macros",
]
optional = true

[dev-dependencies.aes]
version = "0.8"

[dev-dependencies.serde_json]
version = "1"

[dev-dependencies.tempfile]
version = "3"