如何使用 metaflac 管理音乐标签

使用这款强大的开源实用程序,从命令行更正音乐标签错误。
155 位读者喜欢这个。

长期以来,我一直在将 CD 翻录到我的电脑中。在这段时间里,我使用过几种不同的翻录工具,并且我观察到每种工具似乎对标签都有不同的看法,特别是,要用音乐数据保存哪些元数据。我所说的“观察到”是指音乐播放器似乎以一种奇怪的顺序对专辑进行排序,它们将一个物理目录中的曲目分成两张专辑,或者它们会产生其他令人沮丧的烦恼。

我还了解到,有些标签非常晦涩难懂,许多音乐播放器和标签编辑器都不会显示它们。即便如此,它们也可能会在某些边缘情况下使用它们进行排序或显示音乐,例如,播放器将所有包含标签 XYZ 的音乐文件与所有不包含该标签的文件分开,放入不同的专辑中。

因此,如果标签应用程序和音乐播放器不显示“怪异”标签——但却以某种方式受到它们的影响——你能做什么呢?

Metaflac 来解救了!

我一直想熟悉 metaflac,这是一款用于 FLAC 文件的开源命令行元数据编辑器,FLAC 文件是我选择的开源音乐文件格式。并不是说像 EasyTAG 这样出色的标签编辑软件有什么问题,但我想到了那句老话“如果你只有一把锤子……”此外,从实际的角度来看,我的家庭和办公室立体声音响的音乐需求可以通过运行 ArmbianMPD 的小型专用服务器来满足,音乐文件本地存储,运行非常精简的纯音乐无头环境,因此命令行元数据管理工具将非常有用。

下面的屏幕截图显示了我的长期翻录程序造成的典型问题:Putumayo 精彩的哥伦比亚音乐合辑显示为两张单独的专辑,一张包含单首曲目,另一张包含剩余的 11 首曲目

Album with incorrect tags

我使用 metaflac 生成了包含这些曲目的目录中所有 FLAC 文件的所有标签列表

rm -f tags.txt
for f in *.flac; do
	echo $f >> tags.txt
	metaflac --export-tags-to=tags.tmp "$f"
	cat tags.tmp >> tags.txt
	rm tags.tmp
done

我将其保存为可执行 shell 脚本(请参阅我的同事 David Both 关于 Bash shell 脚本的精彩专栏系列,特别是 关于循环的那一篇)。基本上,我在这里做的是创建一个文件 tags.txt,其中包含文件名(echo 命令),后跟它的所有标志,然后是下一个文件名,依此类推。以下是结果的前几行

A Guapi.flac
TITLE=A Guapi
ARTIST=Grupo Bahia
ALBUMARTIST=Various Artists
ALBUM=Putumayo Presents: Colombia
DATE=2001
TRACKTOTAL=12
GENRE=Latin Salsa
MUSICBRAINZ_ALBUMARTISTID=89ad4ac3-39f7-470e-963a-56509c546377
MUSICBRAINZ_ALBUMID=6e096386-1655-4781-967d-f4e32defb0a3
MUSICBRAINZ_ARTISTID=2993268d-feb6-4759-b497-a3ef76936671
DISCID=900a920c
ARTISTSORT=Grupo Bahia
MUSICBRAINZ_DISCID=RwEPU0UpVVR9iMP_nJexZjc_JCc-
COMPILATION=1
MUSICBRAINZ_TRACKID=8a067685-8707-48ff-9040-6a4df4d5b0ff
ALBUMARTISTSORT=50 de Joselito, Los
Cumbia Del Caribe.flac

经过一番调查,结果证明我同时翻录了许多 Putumayo CD,而且我当时使用的任何软件似乎都在除一个文件之外的所有文件上都放置了 MUSICBRAINZ_ 标签。(一个 bug?可能是;我在六张专辑中都看到了这种情况。)此外,关于有时不寻常的排序,请注意 ALBUMARTISTSORT 标签将西班牙语冠词 “Los” 移动到艺术家名称的末尾,逗号之后。

我使用了一个简单的 awk 脚本来列出 tags.txt 文件中报告的所有标签

awk -F= 'index($0,"=") > 0 {print $1}' tags.txt | sort -u

这使用 = 作为字段分隔符将所有行拆分为字段,并打印包含等号的行的第一个字段。结果通过带有 -u 标志的 sort 传递,这消除了输出中的所有重复项(请参阅我的同事 Seth Kenlon 关于 sort 实用程序的精彩 文章)。对于这个特定的 tags.txt 文件,输出是

ALBUM
ALBUMARTIST
ALBUMARTISTSORT
ARTIST
ARTISTSORT
COMPILATION
DATE
DISCID
GENRE
MUSICBRAINZ_ALBUMARTISTID
MUSICBRAINZ_ALBUMID
MUSICBRAINZ_ARTISTID
MUSICBRAINZ_DISCID
MUSICBRAINZ_TRACKID
TITLE
TRACKTOTAL

经过一番调查,我发现 MUSICBRAINZ_ 标志出现在除一个 FLAC 文件之外的所有文件上,因此我使用 metaflac 命令删除了这些标志

for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ALBUMARTISTID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ALBUMID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ARTISTID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_DISCID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_TRACKID "$f"; done

完成后,我可以使用我的音乐播放器重建 MPD 数据库。以下是结果

Album with correct tags

就这样,所有 12 首曲目都在一张专辑中了。

所以,是的,我非常喜欢 metaflac。我希望我会更频繁地使用它,因为我试图解决我的音乐收藏的音乐标签中最后一点怪异之处。强烈推荐!

还有音乐

这几天晚上,我一直在收听 CBC Music 上的 Odario Williams 的节目 After Dark。(CBC 是加拿大公共广播公司。)感谢 Odario,我真正开始喜欢的一张专辑是 Kevin Fox 的Songs for Cello and Voice。这是他的翻唱,翻唱了 Eurythmics 的歌曲 “Sweet Dreams (Are Made of This)。”

我买了这张 CD,现在它在我的音乐服务器上,标签也已正确组织!

接下来阅读什么
Chris Hermansen portrait Temuco Chile
自从 1978 年毕业于不列颠哥伦比亚大学以来,我几乎一直与某种计算机为伴,自 2005 年以来,我一直是全职 Linux 用户,从 1986 年到 2005 年,我一直是全职 Solaris 和 SunOS 用户,在那之前是 UNIX System V 用户。

2 条评论

嗨 Chris,一如既往地感谢您清晰而详尽的见解!

这篇文章和你去年发表的题为《WAV 文件真的比 FLAC 文件更好吗?》的文章都与我消费音乐的方式息息相关。

我想知道像 XLD 这样的转换应用程序在自动“降采样”文件(转换时)方面处于什么位置(我在程序的首选项中看不到任何关于此的信息)。虽然 XLD 在转换无损文件时保留标签等显然非常方便,但如果您认为音频质量会因 XLD 而受到影响,我将毫不犹豫地切换到您推荐的其他方法之一。

谢谢,
Mike

Mike,感谢您的友好评论。我看了一下 XLD;我了解到它仅适用于 Mac 电脑,因此这对我来说几乎是不可能的(在人生的这个阶段,我是一个纯 Linux 用户)。我看到提供了源代码,但我找不到许可证文件,因此我不确定使用条款。

与其查看源代码并在此基础上提供半知半解的意见(这可能不太可靠),我建议您尝试在您感兴趣的格式之间进行转换,然后查看转换后的格式。在 Linux 中,您可以使用 “file” 命令检查格式,如下所示

me@mydesktop:~/Music/The Fabulous Thunderbirds/Strong Like That (FLAC 96.0 kHz 24-bit)$ file *Smooth*
01-05 Smooth (FLAC 96.0 kHz 24-bit).flac: FLAC 音频比特流数据,24 位,立体声,96 kHz,23919360 个采样
me@mydesktop:~/Music/The Fabulous Thunderbirds/Strong Like That (FLAC 96.0 kHz 24-bit)$

我猜想 OSX 的终端中有一个 “file” 命令可用。

话虽如此,我确实遇到过一种情况,“file” 声称文件是 96/24,但实际上文件实际上是 96/16(根据销售文件的供应商的说法,这是一种奇怪的制作错误)。因此,另一种检查方法是使用可以即时了解比特率的音乐播放器 - 例如 Guayadeque。上面的 Fabulous Thunderbirds 示例显示比特率在 3200kbps 左右;我提到的 96/16 专辑显示比特率在 1200kbps 左右。

当我有文件要转换时(在我的情况下,始终是 WAV 到 FLAC;一些供应商出于某种原因喜欢发货 WAV,特别是对于高分辨率文件),通常我使用一个名为 “soundconverter” 的 GNOME 实用程序

https://soundconverter.org/

这可能对您在 OSX 中没有帮助。两个命令行选项是 “flac” 和 “ffmpeg”。我偶尔使用 flac;我发现 ffmpeg 默认情况下喜欢降采样,但可以使用其命令行参数来避免这种情况。根据我的经验,“soundconverter” 和 “flac” 默认情况下都不会降采样。

另一种可能性是 “sox” http://sox.sourceforge.net/,我尝试过并且非常喜欢。但请注意,“sox” 提供了大量选项,并且浏览它们可能会有些令人望而生畏。有一个适用于 OSX 的 sox 版本。

我希望这有帮助!

回复 ,作者 kolomana

© . All rights reserved.