#decoder #flac #wav #mp3

已删除 大锅

纯Rust音频解码器,支持wav、flac、mp3和aac格式

0.0.3 2020年7月19日
0.0.2 2019年12月28日
0.0.1 2019年11月26日

#30 in #flac

Apache-2.0

145KB
3K SLoC

大锅

Build Status Crates.io docs.rs

纯Rust编写的,用于流行的音频格式(Flac、Wav、Mp3、Ogg等)解码器的轻量级实现。

功能

计划的功能包括

  • 对最流行的音频编解码器的解码和可能编码支持
  • 为Web提供WASM API
  • 尝试支持 no_std 环境

编解码器格式支持路线图

格式 标志
AAC aac - -
Flac flac 完成 -
MP3 mp3 进行中 -
PCM pcm - -
WAV wav 完成 进行中
Vorbis vorbis - -

用法

将其添加到 Cargo.toml 文件中

[dependencies]
cauldron = "0.0.2"

示例代码

use cauldron::audio::AudioSegment;
use cauldron::codecs::FormatFlag;

let mut audio_segment = match AudioSegment::read("<path-to-audio-file>", FormatFlag::WAV) {
  Ok(f)  => f,
  Err(e) => panic!("Couldn't open example file: {}", e)
};

// display some audio info
println!("{}", audio_segment);


let samples: Vec<i32> = audio_segment.samples().unwrap().map(|r| r.unwrap()).collect();
println!("total samples {}", samples.len());

播放音频的示例可以在 examples/play.rs 中找到。要播放任何音频,只需运行

cargo run --example play <path-to-audio-file>

致谢

贡献

目前项目还处于非常初期的阶段,因此我目前不寻求任何贡献,但如果您发现任何现有实现中的错误或改进,请随时打开问题。

依赖关系

~105KB