9个不稳定版本
0.5.4 | 2024年2月27日 |
---|---|
0.5.3 | 2023年5月30日 |
0.5.2 | 2023年1月19日 |
0.5.1 | 2022年7月17日 |
0.1.0 | 2020年9月1日 |
#13 在 音频 中排名
56,152 每月下载量
用于 126 个Crate (63 直接)
1MB
15K SLoC
交响乐
交响乐是一个支持AAC、ADPCM、AIFF、ALAC、CAF、FLAC、MKV、MP1、MP2、MP3、MP4、OGG、Vorbis、WAV和WebM的纯Rust音频解码和媒体解复用库。
入门 · 文档 · 示例 · 基准测试
功能
- 对最受欢迎的音频编解码器的解码支持,包括无缝播放支持
- 解复用最常见的媒体容器格式
- 读取大多数元数据和标记格式
- 自动格式和解码器检测
- 基本的音频原语,用于高效地操作音频数据
- 100%安全的Rust
- 最小依赖
- 快速,性能无妥协!
此外,计划的功能包括
- 为集成到其他语言提供C API
- 为Web使用提供WASM API
当前支持
通过单独的Crate提供对单个音频编解码器和媒体格式的支持。默认情况下,交响乐只启用对免费开放标准编解码器和格式的支持,但可以通过功能标志启用其他编解码器和格式。
提示:可以使用
all
功能标志启用所有格式和编解码器。
状态
以下状态分类用于确定每个格式或编解码器的开发状态。
状态 | 含义 |
---|---|
良好 | 许多媒体流可以播放。一些流可能会崩溃、出错或产生可听到的干扰。一些功能可能不受支持。 |
优秀 | 大多数媒体流可以播放。可能存在不可听到的干扰。大多数常见功能得到支持。 |
极好 | 所有媒体流都可以播放。没有可听或不可听到的干扰。所有必需的功能都得到支持。 |
“优秀”状态表示主要开发已完成,该功能处于大多数应用程序可以使用的状态。
只有当功能通过所有合规性测试后,才会分配优秀的状态。如果没有现成的合规性测试,则当Symphonia的输出与参考实现或ffmpeg
在大测试语料库中匹配时,将分配优秀状态。
格式(解复用器)
格式 | 状态 | 无缝播放 | 功能标志 | 默认 | 货柜 |
---|---|---|---|---|---|
AIFF | 优秀 | 是 | aiff |
否 | symphonia-format-riff |
CAF | 良好 | 否 | caf |
否 | symphonia-format-caf |
ISO/MP4 | 优秀 | 否 | isomp4 |
否 | symphonia-format-isomp4 |
MKV/WebM | 良好 | 否 | mkv |
是 | symphonia-format-mkv |
OGG | 优秀 | 是 | ogg |
是 | symphonia-format-ogg |
波形 | 极好 | 是 | wav |
是 | symphonia-format-riff |
* 无缝播放需要解复用器和解码器的支持。
提示:所有格式都可以通过
all-formats
功能标志启用。
编解码器(解码器)
编解码器 | 状态 | 无缝播放 | 功能标志 | 默认 | 货柜 |
---|---|---|---|---|---|
AAC-LC | 优秀 | 否 | aac |
否 | symphonia-codec-aac |
ADPCM | 良好 | 是 | adpcm |
是 | symphonia-codec-adpcm |
ALAC | 优秀 | 是 | alac |
否 | symphonia-codec-alac |
FLAC | 极好 | 是 | flac |
是 | symphonia-bundle-flac |
MP1 | 优秀 | 否 | mp1 ,mpa |
否 | symphonia-bundle-mp3 |
MP2 | 优秀 | 否 | mp2 ,mpa |
否 | symphonia-bundle-mp3 |
MP3 | 极好 | 是 | mp3 ,mpa |
否 | symphonia-bundle-mp3 |
PCM | 极好 | 是 | pcm |
是 | symphonia-codec-pcm |
Vorbis | 极好 | 是 | vorbis |
是 | symphonia-codec-vorbis |
symphonia-bundle-*
包是解码器和本地解复用器的组合。
提示:所有编解码器都可以通过
all-codecs
功能标志启用。同样,所有MPEG音频编解码器都可以通过mpa
功能标志启用。
标签(读取器)
所有元数据读取器都由symphonia-metadata
货柜提供。
格式 | 状态 |
---|---|
ID3v1 | 优秀 |
ID3v2 | 优秀 |
ISO/MP4 | 优秀 |
RIFF | 优秀 |
Vorbis评论(FLAC) | 完美 |
Vorbis评论(OGG) | 完美 |
质量
除了Rust提供的安全性保证外,Symphonia还旨在
- 尽可能正确地解码媒体,如同领先的免费和开源软件解码器
- 防止拒绝服务攻击
- 进行模糊测试
- 提供强大、一致且易于使用的API
性能
Symphonia旨在与流行的基于C的开放源代码实现相媲美,或更快。目前,Symphonia的解码器通常比FFMpeg快/慢15%。然而,确切的范围将强烈取决于编解码器、编码中使用的编解码器功能、Rust编译器版本以及编译的CPU架构。
有关更多信息,请参阅基准测试。
优化
目前,默认情况下未启用SIMD优化。启用任何SIMD支持功能标志将引入rustfft
依赖项。
指令集 | 功能标志 | 默认 |
---|---|---|
SSE | opt-simd-sse |
否 |
AVX | opt-simd-avx |
否 |
Neon | opt-simd-neon |
否 |
提示:所有SIMD优化都可以通过
opt-simd
功能标志启用。
示例
基本用法示例可以在这里
找到。
对于更完整的应用程序,请参阅symphonia-play
,一个简单的音乐播放器。
工具
Symphonia提供以下工具用于调试目的
symphonia-play
用于探测、解码、验证和播放媒体流。symphonia-check
用于验证 Symphonia 解码输出与各种解码器的兼容性。
作者
主要作者是 Philip Deljanov。
特别感谢
- Kostya Shishkov(AAC-LC 解码器贡献,参见
symphonia-codec-aac
)
许可证
Symphonia 在 MPL v2.0 许可证下提供。有关更多详细信息,请参阅 LICENSE 文件。
贡献
Symphonia 是一个免费且开源的项目,欢迎贡献!要开始,请阅读我们的 贡献指南。
依赖项
~4MB
~134K SLoC