About this project

Symphonia is a pure Rust audio decoding and media demuxing library. It is designed for applications that need to read common media container formats, extract metadata and tags, and decode audio streams without relying on C libraries. Supported container formats include AIFF, CAF, ISO/MP4, MKV/WebM, OGG, and Wave. Supported audio codecs include AAC-LC, ADPCM, ALAC, FLAC, MP1, MP2, MP3, PCM, and Vorbis. Some codecs and formats are still in progress, such as Opus, WavPack, and HE-AAC variants. The project uses separate crates for individual formats and codecs, and feature flags control which components are compiled in. By default, only royalty-free open standard codecs and formats are enabled, but an `all` feature flag can enable everything. Metadata and tagging support covers APEv1, APEv2, ID3v1, ID3v2, ISO/MP4, RIFF, and Vorbis comments in FLAC and OGG. The library also provides basic audio primitives for manipulating audio data efficiently. Symphonia emphasizes safety and correctness. It is written in 100% safe Rust, aims to prevent denial-of-service attacks, and is fuzz-tested. The project also provides tools for debugging: `symphonia-play` for probing, decoding, validating, and playing back media streams, and `symphonia-check` for validating decoded output against other decoders. The library is modular and allows registration of third-party demuxers and decoders. Existing third-party adapters include `symphonia-adapter-fdk-aac` for AAC variants via libfdk-aac and `symphonia-adapter-libopus` for Opus via libopus. Symphonia is licensed under the MPL v2.0. The minimum supported Rust version for 0.6.x releases is 1.85. The primary author is Philip Deljanov, and the project welcomes contributions.