#解码 # #高速 #ffmpeg #质量 #pcm

bin+lib hodges

一个用于高速、高质量 PCM 音频解码的小型库

2 个版本 (1 个稳定版)

1.0.0 2019年7月24日
0.1.0 2019年2月14日

#420视频

每月下载 26
用于 2 个 Crates

GPL-3.0-or-later

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