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音频 中排名

Download history 12105/week @ 2024-05-02 9919/week @ 2024-05-09 11801/week @ 2024-05-16 11067/week @ 2024-05-23 11306/week @ 2024-05-30 12444/week @ 2024-06-06 12235/week @ 2024-06-13 11930/week @ 2024-06-20 12165/week @ 2024-06-27 11998/week @ 2024-07-04 13829/week @ 2024-07-11 12125/week @ 2024-07-18 12034/week @ 2024-07-25 13875/week @ 2024-08-01 15675/week @ 2024-08-08 13103/week @ 2024-08-15

56,152 每月下载量
用于 126 个Crate (63 直接)

MPL-2.0 许可证

1MB
15K SLoC

交响乐

Crate Info API Docs Rustc Version 1.53.0+

交响乐是一个支持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 优秀 mp1mpa symphonia-bundle-mp3
MP2 优秀 mp2mpa symphonia-bundle-mp3
MP3 极好 mp3mpa 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