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

BaR*_*Rud 48 command-line audio

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

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

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

<some magic s/w> --picture=<my chosen picture> Music/Artist/*.mp3
Run Code Online (Sandbox Code Playgroud)

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

你能给我推荐任何这样的软件吗?

slm*_*slm 35

使用lame你可以使用一些脚本来做到这一点:

$ lame --ti /path/to/file.jpg audio.mp3
Run Code Online (Sandbox Code Playgroud)

如果文件的名称是这样的,您可以制作一个 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
Run Code Online (Sandbox Code Playgroud)

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

...
albart="${i%.mp3}.jpg"
...
Run Code Online (Sandbox Code Playgroud)

皮卡德/MusicBrainz

如果您想大规模执行此操作,我建议使用 Picard,它是使用 MusicBrainz 数据库的前端工具。Picard 有一个名为“Cover Art Downloader”的插件,它可以批量处理您的收藏。

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

甜菜

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

您可以使用源专辑封面FetchArt插件或使用其嵌入EmbedArt插件

其他选择?

还可以看看之前问过的 U&L 问答题:哪个 mp3 标记工具适用于 Linux?. 此线程中列出了几种替代工具。

  • @Exeleration-G - 不,我不建议使用 `lame`,因为它实际上是一个编码器。还有其他工具可以用来操作 mp3 的 id3 标签。您可以使用 `id3v2 -r "APIC" *.mp3` 或 `eyeD3 --remove-all-images *.mp3` 来删除任何附加的图像。 (9认同)
  • 我不推荐此解决方案,因为它会删除其他 id3 标签。使用“ffmpeg”的解决方案更好。 (2认同)
  • 仅供参考,我的 3.99 版本没有“--ti”选项(debian buster)——eyeD3 似乎是一个不错的选择。 (2认同)

evi*_*oup 23

一种解决方案是使用 ffmpeg:

ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
Run Code Online (Sandbox Code Playgroud)

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

for f in ./*.mp3; do ffmpeg -i "$f" -i cover.jpg -map_metadata 0 -map 0 -map 1 out-"${f#./}"; done
Run Code Online (Sandbox Code Playgroud)

这将创建一个单独的输出文件(因此,如果您有一个名为 的文件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
Run Code Online (Sandbox Code Playgroud)

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

  • 此处显示的 ffmpeg 命令将对音频进行编码。如果您从另一种格式转换,那很好,但如果您只想将艺术添加到现有的 mp3 而不重新编码,请在“-map 1”之后添加“-acodec copy”。 (12认同)

Rap*_*ael 14

对于 MP3:

eyeD3 --add-image="cover.jpg":FRONT_COVER "file.mp3"
Run Code Online (Sandbox Code Playgroud)

对于 FLAC:

metaflac --import-picture-from="cover.jpg" "file.flac"
Run Code Online (Sandbox Code Playgroud)

OGG/Vorbis 似乎更复杂


Aji*_*ngh 5

您可以为此使用FancyAudio gem。它可以将专辑封面添加到 mp3 文件中。 文档在此处获得

特征

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

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

在此处输入图片说明

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

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


小智 5

使用诱变剂中的 mid3v2:

mid3v2 -p <image> <mp3>
Run Code Online (Sandbox Code Playgroud)

使用 lame 或 ffmpeg 重新编码 MP3,而不是仅将图像添加为元 blob。UI 不是命令行。