16个版本 (稳定)

使用旧的Rust 2015

3.5.1 2023年9月25日
3.5.0 2022年9月9日
3.4.0 2018年4月7日
3.3.1 2018年2月18日
0.1.0 2015年3月31日

#2 in 音频

Download history 44964/week @ 2024-04-22 47777/week @ 2024-04-29 46161/week @ 2024-05-06 46537/week @ 2024-05-13 63265/week @ 2024-05-20 57414/week @ 2024-05-27 66435/week @ 2024-06-03 66761/week @ 2024-06-10 65718/week @ 2024-06-17 66283/week @ 2024-06-24 50036/week @ 2024-07-01 49805/week @ 2024-07-08 41429/week @ 2024-07-15 44477/week @ 2024-07-22 40957/week @ 2024-07-29 41401/week @ 2024-08-05

171,112 每月下载量
299 个crate中使用了 (188 直接)

Apache-2.0

120KB
2K SLoC

Hound

Rust中的wav编码和解码库。

Crates.io version Changelog Documentation

Hound可以读取和写入WAVE音频格式,这是一种广泛应用于原始、未压缩音频的通用格式。编写它的主要动机是为了测试Claxon,一个用Rust编写的FLAC解码库。

示例

以下示例生成了一个440 Hz的正弦波,并将其存储为单声道wav文件,采样率为44.1 kHz,每样本16位。

use std::f32::consts::PI;
use std::i16;
use hound;

let spec = hound::WavSpec {
    channels: 1,
    sample_rate: 44100,
    bits_per_sample: 16,
    sample_format: hound::SampleFormat::Int,
};
let mut writer = hound::WavWriter::create("sine.wav", spec).unwrap();
for t in (0 .. 44100).map(|x| x as f32 / 44100.0) {
    let sample = (t * 440.0 * 2.0 * PI).sin();
    let amplitude = i16::MAX as f32;
    writer.write_sample((sample * amplitude) as i16).unwrap();
}

当writer被丢弃时,文件会隐式地最终化,调用writer.finalize()来观察错误。

以下示例计算了一个最多每样本16位的音频文件的均方根(RMS)。

use hound;

let mut reader = hound::WavReader::open("testsamples/pop.wav").unwrap();
let sqr_sum = reader.samples::<i16>()
                    .fold(0.0, |sqr_sum, s| {
    let sample = s.unwrap() as f64;
    sqr_sum + sample * sample
});
println!("RMS is {}", (sqr_sum / reader.len() as f64).sqrt());

特性

读取 写入
格式 PCMWAVEFORMAT, WAVEFORMATEX, WAVEFORMATEXTENSIBLE PCMWAVEFORMAT, WAVEFORMATEXTENSIBLE
编码 整数PCM,IEEE浮点数 整数PCM,IEEE浮点数
每样本位数 8, 16, 24, 32 (整数), 32 (浮点) 8, 16, 24, 32 (整数), 32 (浮点)

贡献

欢迎以错误报告、特性请求或pull请求的形式的贡献。请参阅contributing.md

许可

Hound遵循Apache 2.0许可证。它可以在免费软件和封闭源应用程序中使用,无论是商业用途还是非商业用途,均符合许可证中给出的条件。如果您想在您的GPLv2许可的软件中使用Hound,您可以在您的版权声明中添加一个例外。请勿就许可证的选择提出问题。

无运行时依赖