프로젝트 소개

Symphonia는 순수 Rust 오디오 디코딩 및 미디어 디먹싱 라이브러리입니다. C 라이브러리에 의존하지 않고 일반적인 미디어 컨테이너 포맷을 읽고, 메타데이터와 태그를 추출하며, 오디오 스트림을 디코딩해야 하는 애플리케이션을 위해 설계되었습니다. 지원되는 컨테이너 포맷에는 AIFF, CAF, ISO/MP4, MKV/WebM, OGG, Wave가 있습니다. 지원되는 오디오 코덱에는 AAC-LC, ADPCM, ALAC, FLAC, MP1, MP2, MP3, PCM, Vorbis가 있습니다. Opus, WavPack, HE-AAC 변형과 같은 일부 코덱과 포맷은 아직 개발 중입니다. 이 프로젝트는 개별 포맷과 코덱마다 별도의 크레이트를 사용하며, 기능 플래그로 어떤 구성 요소를 컴파일할지 제어합니다. 기본적으로는 로열티가 없는 공개 표준 코덱과 포맷만 활성화되지만, `all` 기능 플래그로 모든 것을 활성화할 수 있습니다. 메타데이터 및 태깅 지원은 APEv1, APEv2, ID3v1, ID3v2, ISO/MP4, RIFF, 그리고 FLAC과 OGG의 Vorbis comments를 포함합니다. 이 라이브러리는 또한 오디오 데이터를 효율적으로 조작하기 위한 기본 오디오 프리미티브를 제공합니다. Symphonia는 안전성과 정확성을 강조합니다. 100% 안전한 Rust로 작성되었으며, 서비스 거부 공격을 방지하는 것을 목표로 하고, 퍼즈 테스트를 거칩니다. 이 프로젝트는 또한 디버깅 도구를 제공합니다: 미디어 스트림을 탐색, 디코딩, 검증, 재생하기 위한 `symphonia-play`와 디코딩된 출력을 다른 디코더와 비교 검증하기 위한 `symphonia-check`가 있습니다. 이 라이브러리는 모듈식이며 서드파티 디먹서와 디코더를 등록할 수 있습니다. 기존 서드파티 어댑터로는 libfdk-aac를 통한 AAC 변형을 위한 `symphonia-adapter-fdk-aac`와 libopus를 통한 Opus를 위한 `symphonia-adapter-libopus`가 있습니다. Symphonia는 MPL v2.0에 따라 라이선스가 부여됩니다. 0.6.x 릴리스의 최소 지원 Rust 버전은 1.85입니다. 주요 저자는 Philip Deljanov이며, 이 프로젝트는 기여를 환영합니다.