À propos du projet

Symphonia est une bibliothèque de décodage audio et de démultiplexage multimédia en Rust pur. Elle est conçue pour les applications qui doivent lire des formats de conteneurs multimédia courants, extraire des métadonnées et des balises, et décoder des flux audio sans dépendre de bibliothèques C. Les formats de conteneurs pris en charge incluent AIFF, CAF, ISO/MP4, MKV/WebM, OGG et Wave. Les codecs audio pris en charge incluent AAC-LC, ADPCM, ALAC, FLAC, MP1, MP2, MP3, PCM et Vorbis. Certains codecs et formats sont encore en cours de développement, comme Opus, WavPack et les variantes HE-AAC. Le projet utilise des crates séparés pour chaque format et codec, et des indicateurs de fonctionnalités contrôlent quels composants sont compilés. Par défaut, seuls les codecs et formats open standard sans redevance sont activés, mais un indicateur de fonctionnalité `all` peut tout activer. La prise en charge des métadonnées et des balises couvre APEv1, APEv2, ID3v1, ID3v2, ISO/MP4, RIFF et les commentaires Vorbis dans FLAC et OGG. La bibliothèque fournit également des primitives audio de base pour manipuler efficacement les données audio. Symphonia met l'accent sur la sécurité et la correction. Elle est écrite en Rust 100% sûr, vise à prévenir les attaques par déni de service et est testée par fuzzing. Le projet fournit également des outils de débogage : `symphonia-play` pour sonder, décoder, valider et lire des flux multimédia, et `symphonia-check` pour valider la sortie décodée par rapport à d'autres décodeurs. La bibliothèque est modulaire et permet l'enregistrement de démultiplexeurs et de décodeurs tiers. Les adaptateurs tiers existants incluent `symphonia-adapter-fdk-aac` pour les variantes AAC via libfdk-aac et `symphonia-adapter-libopus` pour Opus via libopus. Symphonia est sous licence MPL v2.0. La version minimale de Rust prise en charge pour les versions 0.6.x est 1.85. L'auteur principal est Philip Deljanov, et le projet accueille les contributions.