2个版本

0.5.1 2024年4月26日
0.5.0 2024年4月16日

#329多媒体

Download history 38/week @ 2024-04-27 1/week @ 2024-05-04 5/week @ 2024-05-18 1/week @ 2024-05-25 2/week @ 2024-06-08 5/week @ 2024-07-06

每月55次下载

MIT/Apache

120KB
2K SLoC

Ausnd

Cross-platform tests

Rust库,用于读取和写入Sun/Next AU音频格式。特性

  • 读取AU文件
  • 写入AU文件
  • 读取无限AU流
  • 无堆内存分配
  • 无不安全代码
  • 无panic
  • 支持未压缩的整数和浮点样本
  • 支持压缩类型:μ-law和A-law
  • 支持大于4GB的音频流

范围外

  • 不同样本格式之间的转换(例如,i16到f32)。转换方式有 很多,因此这个crate不做此操作。

用法

读取AU音频文件

let mut bufrd = std::io::BufReader::new(std::fs::File::open("test.au").expect("File error"));
let mut reader = ausnd::AuReader::new(&mut bufrd).expect("Read error");
let info = reader.read_info().expect("Invalid header");
for sample in reader.samples().expect("Can't read samples") {
    println!("Got sample {:?}", sample.expect("Sample error"));
}

写入AU音频文件(默认为2通道,16位有符号整数样本,采样率44100)

let mut bufwr = std::io::BufWriter::new(std::fs::File::create("test.au").expect("File error"));
let winfo = ausnd::AuWriteInfo::default();
let mut writer = ausnd::AuWriter::new(&mut bufwr, &winfo).expect("Write header error");
writer.write_samples_i16(&[ 1, 2, 3, 4 ]).expect("Write sample error");
writer.finalize().expect("Finalize error");

有关详细信息,请参阅 ausnd API文档

示例

使用 ausnd::AuReadertinyaudio

cd examples/ausnd-tinyaudio
cargo run filename.au

使用 AuStreamParserAuWriter 的简单音频处理器,用于音量和噪声效果

cargo run --example ausnd-piper v0.8 n0.1 < input.au > out.au

该音频处理器可以通过ffmpeg进行管道传输,ffmpeg将mp3转换为AU,然后ausnd-piper将其写入AU,以便ffmpeg将其转换为mp3。

ffmpeg -i music.mp3 -f au - | cargo run --example ausnd-piper v1.5 n0.2 | ffmpeg -i - -y out.mp3

测试

Toisto AU测试套件 是一个子模块,在运行集成测试之前需要获取。

cd ausnd
git submodule update --init
./tools/test.sh

测试应以 --- 所有测试通过。 结束。

性能测试

cargo bench

有一个GitHub操作名为“跨平台测试”(cross-test.yml),它会自动运行 ./tools/test.sh,针对小端64位x64_86和大端32位PowerPC。

参考

许可

许可协议为Apache License, Version 2.0MIT许可协议,您可任选其一。

除非您明确声明,否则根据Apache-2.0许可协议定义的您有意提交并包含在工作中的任何贡献,将按上述协议双重许可,不附加任何额外条款或条件。

依赖项

~55KB