#flac #track #split #multiple #decode #metadata #file

bin+lib flac-tracksplit

将 FLAC+CUE(嵌入式)分割成多个轨道

1 个不稳定版本

0.1.0 2023年5月17日

#932文件系统

MIT 许可证

33KB
555

Build Status Docs crates.io

flac-tracksplit - 用于将整盘 FLAC 文件(带嵌入式 CUE 表)分割成多个轨道的工具

例如,你可能会对 11 年前将整张 CD 作为单个无损压缩 FLAC 文件表示出来表示赞赏,用于存档目的。你投入了大量时间来抓取这些 CD,为它们分配了大量的存储空间,并确保你拥有的所有 CD 都准确地表示为 MusicBrainz 发布版本,并且具有完美的元数据,等等。

再进一步说,现在你想要 ... 实际使用这些文件,这时你发现几乎没有东西支持 CUE+FLAC 格式了,而要从你现在拥有的数百 GB 数据中获得任何有用的东西,唯一的方法就是重新编码、重新标记和重新排序它们。那么,你该怎么办呢?

你可以转向使用像 unflactrackfs 这样的工具,但你将发现它们会丢失可能存在于现有存档副本中的某些元数据,并且它们只是将 FLAC 文件解码然后再重新编码 - 这是对 CPU 时间的浪费!(在 trackfs 的情况下,这还是对墙钟时间的浪费 - 重新编码的速度太慢,无法使用 navidrome 等工具流式传输轨道)。

所以,也许这个工具能帮到你。

flac-tracksplit 在轨道边界进行帧精确的 FLAC 分割,重点是 不进行不必要的操作,特别是不会重新编码所有这些有价值的数据。它通过各种手段从你的存档副本中提取出分割后的轨道集,但这些轨道确实包含了你为它们设置的每个轨道(和整张专辑)的标签,以及正确解码(带有搜索),并且它们都从正确的时间戳开始和结束(注意,它们在 FRAME 边界结束,这可能包括来自下一个轨道的一些样本;但在典型使用中,这不会超过几毫秒)。

要使用它,请运行以下命令:flac-tracksplit --output-dir /output/files/will/go/here /path/to/your/archival/copies/*.flac

分割过程是多线程的(每台机器的每个物理核心处理一个存档文件),每个专辑的处理时间不应超过一秒钟。

未来工作

这个工具足够快,以至于可以使FUSE文件系统变得可行!也许有人愿意贡献一个,那会很有趣。(但是,我正在使用这个工具将我的cue+flac文件分割成每个轨道的副本,并将它们作为规范数据集来处理;目前很少有支持cue+flac的东西,使得这些存档副本变得有价值。)

依赖项

约12–23MB
约369K SLoC