2 个版本 (1 个稳定版)
1.0.0 | 2019年7月24日 |
---|---|
0.1.0 | 2019年2月14日 |
#420 在 视频
每月下载 26 次
用于 2 个 Crates
37KB
723 代码行
hodges
霍奇斯是一个围绕 libav 构建的小型 Rust 库,旨在提供高质量、高速的音频转码到 "raw" f32le PCE 音频。它设计为静态链接(除了 libAV 组件),以避免在用 ffmpeg 转码音频时进行系统调用。
这个名字是为了纪念约翰尼·霍奇斯,一位以与杜克·埃灵顿的大乐队合作而闻名的高音萨克斯管演奏家。
未来改进
霍奇斯在解码 flac 和 alac 文件方面目前相当慢(比 ffmpeg 慢 2-5 倍),原因尚不完全清楚。可能是因为核心解码 "循环" 中缺乏并行性。
霍奇斯目前动态链接它依赖的 libav 的各个组件,并假设用户/开发者在构建时已经安装了 libav/ffmpeg。在某个时候,手动构建 libav/ffmpeg 会更好,以便可以将其静态链接,或者使 hodges 能够为其他平台交叉编译。
lib.rs
:
libffmpeg 的 Rust 接口,用于快速音频解码。
libhodges 提供了一个简单易用的接口,用于将音频文件解码为单通道 44100Hz 32 位小端 PCM 数据。实际上,它是 ffmpeg 的静态绑定,使我们能够实现类似于以下一行 ffmpeg 调用的效果
ffmpeg -loglevel quiet -i <filename> -f f32le -acodec pcm_f32le -ac 1 -ar 44100 pipe:1
然而,使用 libhodges 意味着用户不必担心子进程、流或其他操作系统垃圾 - 相反,他们可以访问 ffmpeg 的内部。一行命令行调用可以替换为以下命令
let state: State<u8> =
State::from_file(filename.clone())?;
for c in state {
io::stdout().write(&[c])?;
}
io::stdout().flush()?;
命名
霍奇斯是 Ellington
项目的组成部分 - 一套旨在使摇摆舞 DJ 更容易自动计算摇摆音乐节奏的工具。项目的每个组件都是以杜克·埃灵顿乐队成员(或编曲者)的名字命名的。霍奇斯是以 Johnny Hodges 的名字命名的,他是埃灵顿乐队的主要高音萨克斯管演奏家,也是摇摆时代最熟练和最有才华的高音萨克斯管演奏家之一。
依赖关系
~0–2.5MB
~49K SLoC