如何从多个 FLAC 文件制作 FLAC+cue?

如何从多个 FLAC 文件制作 FLAC+cue?

我尝试过用谷歌搜索,但只能找到相反方向的指南。

我有来自专辑的几个 flac 文件,都已正确标记。我想将它们自动制作成带有提示表的单个 flac 文件(即不粘贴到 Audacity 中并自己制作提示表)。

这可能吗?

答案1

使用什恩工具,一种用于处理无损音频文件的多用途、多格式的命令行工具。

shntool join -o flac *.flac

这将生成一个文件joined.flac,其中包含 中每个文件的音频内容*.flac。请注意,您可能希望指定 FLAC 文件的名称,而不是将其留给*.flac。这可让您确保文件以正确的顺序合并,并且不会包含不需要的 FLAC 文件。

shntool cue *.flac > joined.cue

这将生成一个 CUE 文件joined.cue,即列出音轨和时间的简单文本文件。指定 FLAC 文件的名称时也需注意这一点。(如果您按顺序尝试这些命令,joined.flac现在将是 中的一个文件*.flac。)

答案2

提示工具应该可以让你这样做 - 你可以选择文件所在的整个文件夹,然后选择“嵌入式”作为模式(嵌入式指的是专辑封面,而不是 flac 文件。选择 image+cue 以获得单独的专辑封面图像)和“编码”作为操作。选择 flac 作为文件类型,选择 libflake 作为编码器

在此处输入图片描述

这将弹出一个窗口,其中有提示表的几组数据 - 第一组基于您的数据,其他组来自 freedb 和其他网站。

在此处输入图片描述

这将为您提供一个带有提示文件的 flac 文件。

答案3

我尝试了 foobar2000 路线,但不幸的是,它没有准确打印每个曲目的 INDEX 变量。我也无法让其他解决方案奏效。我做了很多尝试和错误(在 ChatGPT 的大力帮助下),并编写了一个可以做到这一点的 bash 脚本。

#!/bin/bash

#if this doesn't work, you may need to install flac:
#sudo apt install flac
#written with significant help from ChatGPT

#INSTRUCTIONS: 1) Save this code as create_cue.sh
#                           2) Place it in the same folder as the .flac files you want to create a .cue sheet for
#                           3) Run the bash script (you may need to mark it as executable)
#                           4) Voila! Instant .cue file. Enjoy

# Get the first FLAC file in the directory
flac_file=$(ls *.flac | head -n 1)

# Get the header information from the FLAC file
PERFORMER=$(metaflac --show-tag=ARTIST "$flac_file" | cut -d= -f2)
TITLE=$(metaflac --show-tag=ALBUM "$flac_file" | cut -d= -f2)
DATE=$(metaflac --show-tag=DATE "$flac_file" | cut -d= -f2)
COMMENT=$(metaflac --show-tag=COMMENT "$flac_file" | cut -d= -f2)

# Set variables for the cue file
CUEFILE="$PERFORMER - $TITLE.cue"

# Initialize variables for cumulative time
HOURS=0
MINUTES=0
SECONDS=0

# Start writing cue file
echo "REM DATE $DATE" >> "$CUEFILE"
echo "REM COMMENT $COMMENT" >> "$CUEFILE"
echo "PERFORMER \"$PERFORMER\"" >> "$CUEFILE"
echo "TITLE \"$TITLE\"" >> "$CUEFILE"

# Loop through each flac file in the current directory
for flacfile in *.flac; do
    
    # Get track number, performer, and title from file tags
    TRACK=$(metaflac --show-tag=TRACKNUMBER "$flacfile" | sed 's/.*=//')
    PERFORMER=$(metaflac --show-tag=ARTIST "$flacfile" | sed 's/.*=//')
    TITLE=$(metaflac --show-tag=TITLE "$flacfile" | sed 's/.*=//')

    # Write track info to cue file
    printf "FILE \"$flacfile\" WAVE \n" >> "$CUEFILE"
    printf "  TRACK %02d AUDIO\n" "$TRACK" >> "$CUEFILE"
    printf "    TITLE \"%s\"\n" "$TITLE" >> "$CUEFILE"
    printf "    PERFORMER \"%s\"\n" "$PERFORMER" >> "$CUEFILE"
    printf "    INDEX 01 %02d:%02d:%02d\n" "$HOURS" "$MINUTES" "$SECONDS" >> "$CUEFILE"

    # Get length of track in seconds
    LENGTH=$(metaflac --show-total-samples "$flacfile")
    LENGTH=$((LENGTH/44100))

    # Update cumulative time
    SECONDS=$((SECONDS+LENGTH))
    if [ $SECONDS -ge 60 ]; then
        MINUTES=$((MINUTES+SECONDS/60))
        SECONDS=$((SECONDS%60))
    fi
    if [ $MINUTES -ge 60 ]; then
        HOURS=$((HOURS+MINUTES/60))
        MINUTES=$((MINUTES%60))
    fi

done

答案4

看看 Foobar2000,它可以创建带有嵌入式提示表的单个文件,还可以嵌入艺术作品,还可以播放生成的文件 http://www.foobar2000.org/

相关内容