将 wav 转换为带有标签的 flac

将 wav 转换为带有标签的 flac

长话短说:我需要一个脚本将 wav 文件转换为 flac,同时将文件名(减去扩展名)放置在 flac 文件的歌曲标题标签中。

我有大约 1200 张音频 CD,我决定将它们无损存档在 TB 驱动器上。由于有足够的空间,我使用 k3b 将它们翻录为 wav 文件,认为通过跳过压缩步骤可以节省大量时间。嗯,确实如此,但在发现错误之前我已经撕了很多:当我尝试将它们导入像 Rhythmbox 这样的播放器时,它们没有任何标签(元数据),因此无法识别和排序他们正确地。我已将其余部分转换为 flac 以避免该问题,但我想修复该错误,而无需返回并重新安装所有这些 CD。有什么建议么?

答案1

flac从同名包中安装命令并运行

#!/bin/bash
find . -name '*.wav' |
while read file # eg stuff/artist/album/title.wav
do      file="$PWD/${file#./}" # make absolute to get more info
        album=${file%/*}    # stuff/artist/album
        artist=${album%/*}  # stuff/artist
        album=${album##*/}  # album
        artist=${artist##*/} # artist
        title=${file##*/}   # title.wav
        title=${title%.wav} # title
        flac -s --best --delete-input-file \
         --tag="TITLE=$title" \
         --tag="ALBUM=$album" \
         --tag="ARTIST=$artist" \
         "$file" # creates .flac removes .wav
done

标题是文件的基本名称,减去 .wav 后缀,专辑是上面的直接目录,艺术家是上面的目录。该--delete-input-file选项删除 .wav。看参数扩展在 bash 手册页中,它删除了变量末尾或开头的${var%pattern}glob 模式(即由* ?和组成)(${var#pattern}); [...]%% 和 ## 版本删除最长的匹配项。

相关内容