[package]
name = "unbundle"
version = "5.1.0"
edition = "2024"
authors = ["Skander Jeddi <skanderjeddi@fastmail.com>"]
description = "Unbundle media files - extract still frames, audio tracks, and subtitles from video files"
license = "MIT"
repository = "https://github.com/skanderjeddi/unbundle"
readme = "README.md"
keywords = ["video", "audio", "ffmpeg", "extraction", "media"]
categories = ["multimedia", "multimedia::video", "multimedia::audio"]
exclude = ["tests/fixtures/*.mp4", "tests/fixtures/*.mkv", "target/"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
ffmpeg-next = "8"
ffmpeg-sys-next = "8"
image = "0.25"
log = "0.4"
thiserror = "2.0"
clap = { version = "4.5", features = ["derive"] }
clap_complete = "4.5"
colored = "3.0"
indicatif = "0.18"
serde_json = "1.0"
tokio = { version = "1", features = ["rt", "sync", "macros"], optional = true }
tokio-stream = { version = "0.1", optional = true }
futures-core = { version = "0.3", optional = true }
rayon = { version = "1.11", optional = true }
gif = { version = "0.13", optional = true }
[features]
default = []
async = ["tokio", "tokio-stream", "futures-core"]
rayon = ["dep:rayon"]
hardware = []
scene = []
gif = ["dep:gif"]
waveform = []
loudness = []
transcode = []
encode = []
full = ["async", "rayon", "hardware", "scene", "gif", "waveform", "loudness", "transcode", "encode"]
[dev-dependencies]
criterion = "0.5"
image = "0.25"
tempfile = "3.0"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
tokio-stream = "0.1"
[[example]]
name = "async_extraction"
required-features = ["async"]
[[example]]
name = "rayon"
required-features = ["rayon"]
[[example]]
name = "scene"
required-features = ["scene"]
[[example]]
name = "hardware_acceleration"
required-features = ["hardware"]
[[example]]
name = "gif_export"
required-features = ["gif"]
[[example]]
name = "waveform"
required-features = ["waveform"]
[[example]]
name = "loudness"
required-features = ["loudness"]
[[example]]
name = "transcode"
required-features = ["transcode"]
[[example]]
name = "video_encoder"
required-features = ["encode"]
[[bench]]
name = "unbundle_benchmarks"
path = "benches/unbundle_benchmarks.rs"
harness = false
[[bin]]
name = "unbundle-cli"
path = "src/bin/unbundle-cli.rs"
[[bin]]
name = "unbundle"
path = "src/bin/unbundle.rs"