MP4 decryption for Rust - Bento4 mp4decrypt as a library and CLI.
- Idiomatic API - small, focused Rust surface over Bento4 decryption
- CLI parity for core inputs - accepts
--key,--fragments-info, and--show-progress - Track ID and KID keys - use decimal track IDs or 128-bit hexadecimal KIDs
- File and memory decryption - decrypt from paths or in-memory buffers
- Progress callbacks - report Bento4 progress in library code or through the bundled CLI
- Reusable context - build a
Mp4Decryptoronce and reuse it across many decrypt calls - Process-isolated file decryption - run multiple file decrypts in parallel through
IsolatedMp4Decryptor - Async file decryption - enable the
tokiofeature fordecrypt_file_asyncwithoutspawn_blocking - Typed errors - all public failures are surfaced through
rsmp4decrypt::Error - Thread-safe usage - internal serialization keeps Bento4 stable across concurrent callers
- Vendored native sources - published crates build from the checked-in
vendor/bento4-srcsnapshot
[dependencies]
rsmp4decrypt = "0.2.0"
# Enable the async isolated file API:
# rsmp4decrypt = { version = "0.2.0", features = ["tokio"] }To install the CLI:
cargo install rsmp4decrypt| Feature | Description |
|---|---|
tokio |
Enables IsolatedMp4Decryptor::decrypt_file_async using tokio::process |
See the
examples/directory for file decryption, in-memory decryption, multi-key single-file decryption, progress reporting, threaded isolated file decryption, and Tokio-based async isolated file decryption.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in rsmp4decrypt by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Read Bento4's License