从命令行以批处理模式将专辑封面添加到 mp3/ogg 文件?

从命令行以批处理模式将专辑封面添加到 mp3/ogg 文件?

我正在 Linux 中寻找一个软件,它将以批处理模式将专辑封面/封面添加到每个选定的文件中。专辑封面是存储在我的电脑中的 jpg/png 格式。如果能从网上导入那就太好了。

目前我已经尝试了 Rhythmbox 和 Banshee。我也尝试过lameeasytag,但似乎它们不支持批处理模式。lame不是添加属性,但覆盖。 (我知道蹩脚的是仅有的到目前为止已经使用过命令行 s/wi)。

所以,基本上我正在寻找:

<some magic s/w> --picture=<my chosen picture> Music/Artist/*.mp3

这会将图片永久添加到文件的元数据中。

你能给我推荐一些这样的软件吗?

答案1

您可以lame使用一些脚本来完成此操作:

$ lame --ti /path/to/file.jpg audio.mp3

如果文件的命名类似于这样,您可以创建一个 shell 脚本来执行您想要的操作:

for i in file1.mp3 file2.mp3 file3.mp3; do
  albart=$(echo $i | sed 's/.mp3/.jpg/')
  lame --ti /path/to/$albart $i
done

sed您可以使上面的内容稍微更紧凑,并通过使用bash删除匹配的后缀来消除需要:

...
albart="${i%.mp3}.jpg"
...

皮卡德/音乐大脑

如果您想大规模执行此操作,我建议使用 Picard,它是使用 MusicBrainz 数据库的前端工具。 Picard 有一个名为“封面艺术下载器”的插件,它可以对您的批量收藏执行此操作。

然而,上面的内容似乎不是命令行驱动的。

甜菜

另一种选择是使用beets.这可以从命令行驱动,并利用 MusicBrainz 数据库来获取专辑封面。

您可以使用以下方式获取专辑封面FetchArt 插件或使用嵌入它嵌入艺术插件

其他选择?

另请查看之前提出的 U&L 问答,标题为:哪款适用于 Linux 的 mp3 标记工具?。此线程中列出了几种替代工具。

答案2

一种解决方案是使用 ffmpeg:

ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3

您可以将其放入 for 循环中以执行目录中的每个 MP3:

for f in ./*.mp3; do ffmpeg -i "$f" -i cover.jpg -map_metadata 0 -map 0 -map 1 out-"${f#./}"; done

这将创建一个单独的输出文件(因此,如果您有一个名为 的文件foo.mp3,则最终将得到foo.mp3out-foo.mp3);这是因为 ffmpeg 无法覆盖其输入。您可以使用以下方法修复此问题:

for f in ./*.mp3; do \
ffmpeg -i "$f" -i cover.jpg -map_metadata 0 -map 0 -map 1 out-"${f#./}" \
&& mv out-"${f#./}" "$f"; done

使用 ffmpeg 解决这个问题有点像使用巡航导弹来破解坚果。更专业的元数据操作工具肯定能够通过更干净、更短的命令来完成此操作。

答案3

对于 MP3:

eyeD3 --add-image="cover.jpg":FRONT_COVER "file.mp3"

对于 FLAC:

metaflac --import-picture-from="cover.jpg" "file.flac"

OGG/Vorbis 似乎是更复杂

答案4

您可以使用花式音响宝石为此。它可以将专辑封面添加到 mp3 文件中。 文档可用这里

特征

  1. 将专辑封面添加到单个 mp3 文件
  2. 将专辑封面添加到多个 mp3 文件。

下面的屏幕截图显示了 fancy_audio 在包含图像和多个 mp3 文件的文件夹中运行时的输出

在此输入图像描述

下面的屏幕截图显示了 fancy_audio 在包含 mp3 和图像文件的文件夹中运行时的输出

此图显示了 fancy_audio 在包含 mp3 和图像文件的文件夹中运行时的输出

相关内容