21次发布
使用旧的Rust 2015
0.10.2 | 2021年1月20日 |
---|---|
0.10.1 | 2020年3月16日 |
0.10.0 | 2020年1月30日 |
0.9.4 | 2019年3月8日 |
0.4.1 | 2016年11月17日 |
70 在 音频 中排名
74,054 每月下载量
在 135 个 Crate中使用(直接使用34个)
215KB
4.5K SLoC
lewton
纯Rust编写的Vorbis解码器。
要尝试解码器,你可以这样做
cargo run --example player /path/to/your/audio_file.ogg
然后它会播放音频。
如果你想知道如何使用这个crate,请查看示例文件夹。
此crate在audio
和header
模块中提供了低级API,用于每包解码,并在inside_ogg
模块中提供了高级API,用于ogg/vorbis流。
部分内容是在公共领域stb_vorbis解码器实现的帮助下创建的。
所需的最小Rust版本为1.36。
使用unsafe
整个库没有使用一行unsafe代码。实际上,lib.rs包含#![forbid(unsafe_code)]
指令。
关于此crate的历史
我从2015年12月开始工作在这个crate上。目标是学习更多关于Rust和音频处理的知识,同时为Rust生态系统提供一些有用的东西。
我没有查阅libvorbis实现,因为那样我首先必须遵守BSD许可证,其次是因为我不想让这个crate仅仅成为一个从C到Rust的翻译。相反,我想让这个crate基于规范,这样我就可以更多地了解Vorbis是如何工作的。
我唯一查阅libvorbis实现的时候,是为了查找ogg crate需要的函数实现(CRC函数),这就是为什么那个crate是BSD许可的,并且归功于作者。然而,此crate中不包含来自libvorbis实现的任何代码,无论是翻译还是其他。
过了一段时间,我意识到如果没有一个可工作的实现,进展会变得过于缓慢。
因此,我继续使用公共领域 stb_vorbis
实现并使用其中的一些代码(尤其是 IMDCT 算法)将其转换为 Rust。我还将其用于调试,通过比较其输出与我的输出进行比较。
然而,这个软件包的大部分内容是通过阅读规范创建的。
C 语言使用
lewton 提供了一组兼容 C 的库、头文件和 pkg-config 文件。
要构建和安装它,您可以使用 cargo-c
cargo install cargo-c
cargo cinstall --release --destdir /tmp/lewton
sudo cp -a /tmp/lewton/* /
许可证
根据您的选择,许可协议为 Apache 2 或 MIT。有关详细信息,请参阅 LICENSE 文件。
位于 examples/
文件夹内的所有示例均采用 CC-0 许可证。
贡献的许可证
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中的任何贡献,将根据上述方式双许可/CC-0 许可,而无需任何额外条款或条件。
依赖项
~355–530KB
~15K SLoC