#image #mp3 #id3

bin+lib id3-image

将图像嵌入MP3文件的工具

9次发布

0.3.1 2022年6月5日
0.3.0 2021年2月24日
0.2.0 2021年2月17日
0.1.5 2021年1月3日
0.1.1 2019年2月24日

#379多媒体

32 每月下载量

MIT 许可证

10MB
167

Build Status

此工具封装了 rust-id3 库,提供了一种轻松操作MP3文件中嵌入的封面艺术的方法。嵌入的图像通常会被音乐播放器和缩略图生成器识别。

该项目是为了我个人使用而制作的,因此可能存在不是所有情况下都理想的假设。如果它不适合您,请打开 一个GitHub问题

包含三个可执行文件

  • id3-image-embed
  • id3-image-extract
  • id3-image-remove

以下是它们的使用总结。您也可以使用 --help 来获取更多信息。

嵌入

要将图像嵌入到MP3文件中,请使用 id3-image-embed

id3-image-embed <music-file.mp3> [image-file.jpg]

该图像不一定是JPEG,只要 image 库接受即可。但是,它将被嵌入为JPEG,没有特定的原因,只是看起来像是一个合理的默认选择。

ID3标签将存储为ID3v2.3,并直接在音乐文件中写入。

图像文件路径是可选的——如果省略,程序将寻找与音乐文件同名的图像,但扩展名为"jpg"。这有点具体,但与默认提取文件名相匹配,使得提取→编辑→嵌入变得容易。

提取

要从MP3中提取嵌入的图像文件,请使用 id3-image-extract

id3-image-extract <music-file.mp3> [image-file.jpg]

图像文件路径是可选的——如果省略,图像将与音乐文件同名,但扩展名为jpg。如果已存在同名图像文件,它将被静默覆盖。如果歌曲文件没有嵌入的图像,您将收到错误消息。

您可以为脚本目的附加一个 -v--verbose 标志,以将图像文件名输出到stdout。

删除

使用 id3-image-remove 从MP3文件中删除所有嵌入的图像

id3-image-remove <music-file.mp3>

如果您不喜欢封面艺术并希望“清理”MP3文件,这可能很有用。工具在删除之前会要求确认,以防出错。如果您正在为脚本目的使用它,可以附加 --no-confirm 来避免此步骤。

附加脚本

您可以使用 id3-image-extract 来构建一个“预览”工具,快速查看图像的封面艺术。您只需要一个临时文件名来提取到。

#! /bin/sh

set -e

if [ $# -lt 1 ]; then
  echo "USAGE: id3-image-preview <music-file.mp3>"
  exit 1
fi

music_file=$1

# Create an auto-removed file when script exits
image_file=$(mktemp --suffix='.jpg')
exec 3>"$image_file"
rm "$image_file"

id3-image-extract "$music_file" "$image_file"
// Would probably work with `open` on a mac, but hasn't been tested:
xdg-open "$image_file"

您还可以编写一个脚本,使用GUI文件选择器选择要嵌入的图像。您需要使用 zenity 来完成这个任务。

#! /bin/sh

set -e

if [ $# -lt 1 ]; then
  echo "USAGE: id3-image-gui-embed <music-file.mp3>"
  exit 1
fi

music_file=$1

# Pick the image file with a file chooser
image_file=$(zenity --file-selection --filename="$(pwd)/" --title="Select Cover Art")

id3-image-embed "$music_file" "$image_file"

这个特定的弹出窗口不会仅过滤图像,因为我无法找出如何在 zenity 中创建一个通用的“图像”过滤器。您可以将 --file-filter='*.jpg' 添加到 zenity 以仅显示 JPEG 文件。

当这些脚本附加到GUI文件管理器时尤其方便。我首选的,Thunar,允许“自定义操作”,这些操作可以插入其中。

测试所用的音乐

Christian Bakker 的电梯音乐尝试1:http://www.jamendo.com/en/list/a98147/echoes-from-the-past

可能未来的工作

  • 在提取时不要静默覆盖图像
  • 允许不同的输出格式
  • 允许不同的ID3版本
  • 允许嵌入/提取多个图像(目前,只能提取第一个)
  • 用更简单的CLI解决方案替换 structopt + clap -- 简单项目的许多依赖项

依赖项

~8MB
~118K SLoC