mediumi is a media toolkit written from scratch in Rust. It provides the following features.
- Media container demuxer and muxer for the following containers
- MP4 / Fragmented MP4
- MPEG2-TS
- Parser and Serializers and for the following codecs
- AAC (ADTS)
- AC-3 (A/52)
- H.264 (AVC)
- Encrypter
- Common Encryption (CENC) for fmp4/cmaf:
cenc(AES-128-CTR) andcbcs(AES-128-CBC, 1:9 pattern)
- Common Encryption (CENC) for fmp4/cmaf:
- mediumi-aac
- AAC (ADTS) bitstream parser and serializer
- mediumi-ac3
- AC-3 (A/52) bitstream parser and serializer
- mediumi-crypto
- Common Encryption (CENC) encrypter for fmp4/cmaf (H.264 video, AAC audio);
cencandcbcsschemes
- Common Encryption (CENC) encrypter for fmp4/cmaf (H.264 video, AAC audio);
- mediumi-h264
- H.264 (AVC) bitstream parser and serializer
- mediumi-mpeg2ts
- MPEG2-TS container demuxer and muxer
$ make build-all # Build all crates
$ make build-aac # Build specific crate
$ make build-ac3
$ make build-h264
$ make build-mp4
$ make build-mpeg2ts$ make test-all # Test all crates
$ make test-aac # Test specific crate
$ make test-ac3
$ make test-h264
$ make test-mp4
$ make test-mpeg2ts- AAC (ADTS)
- ISO/IEC 14496-3
- AC-3 (A/52)
- ATSC A/52
- H.264
- ISO/IEC 14496-10
- MP4
- ISO/IEC 14496-12
- ISO/IEC 14496-15
- MPEG2-TS
- ISO/IEC 13818-1
- CENC (Common Encryption)
- ISO/IEC 23001-7
This project is under active development. APIs may change without notice.
Contributions are welcome.
If you find a bug, have a feature request, or want to improve the implementation, please open an issue or submit a pull request.