xen*_*ide 85 command-line gui audio flac
我有一张完整的专辑 flac 和一个提示文件。我如何将其拆分为每首曲目的 flac?
我是 KDE 用户,所以我更喜欢 KDE/Qt 方式。我也想查看命令行和其他 GUI 答案,但它们不是我的首选方法。
小智 99
Shnsplit 可以直接读取提示文件,这也意味着它可以访问提示文件中的其他数据(不仅仅是断点)并生成比split-*.flac以下更好的文件名:
shnsplit -f file.cue -t %n-%t -o flac file.flac
Run Code Online (Sandbox Code Playgroud)
当然,如果原始 flac 文件在同一目录中,这会使使用 cuetag.sh 变得更加困难。
Kam*_*bus 24
我只知道一种 CLI 方式。您将需要cuetools 和shntool。
cuebreakpoints file.cue | shnsplit -o flac file.flac
cuetag.sh file.cue "split-*".flac
Run Code Online (Sandbox Code Playgroud)
小智 23
Flacon是一个直观的开源 GUI,它完全可以做到这一点:将 FLAC 与 CUE 分开。
Flacon 从一个包含整个音乐专辑的大音频文件中提取单个曲目,并将它们保存为单独的音频文件。为此,它使用来自相应 CUE 文件的信息。
除其他外,它支持:
支持的输入格式:WAV、FLAC、APE、WavPack、True Audio (TTA)。
支持的输出格式:FLAC、WAV、WavPack、AAC、OGG 或 MP3。
CUE 文件的自动字符集检测。
要使用它,您只需要*.cue使用 Flacon打开文件。然后它应该自动检测大*.flac文件(如果没有,您可以手动指定),然后您应该选择 Flac 输出格式(并可选择配置编码器),并开始转换过程。

小智 8
如果正在使用高质量的文件,shnsplit 会很高兴地出错
shnsplit: error: m:ss.ff format can only be used with CD-quality files
Run Code Online (Sandbox Code Playgroud)
幸运的是,flac 二进制文件支持 --skip=mm:ss.ss 和 --until=mm:ss.ss 所以脚本可以使用像这样的提示断点:
[..]
time[0]="00:00.00"
c=1
for ts in $(cuebreakpoints "${cue_file}"); do
time[${c}]=${ts}
c=$((c+1))
done
time[${c}]='-0'
for ((i=0;i<$((${#time[@]}-1));i++)); do
trackno=$(($i+1))
TRACKNUMBER="$(printf %02d ${trackno})"
title="$(cueprint --track-number ${trackno} -t '%t' "${cue_file}")"
flac --silent --exhaustive-model-search --skip=${time[$i]} --until=${time[$(($i+1))]} --tag=ARTIST="${ARTIST}" --tag=ALBUM="${ALBUM}" --tag=DATE="${DATE}" --tag=TITLE="${title}" --tag=TRACKNUMBER="${TRACKNUMBER}" "${aud_file}" --output-name="${TRACKNUMBER}-${title}.flac"
done
Run Code Online (Sandbox Code Playgroud)