使用 id3v2 获取 MP3 ID3 (V2) 标签

Posted

技术标签:

【中文标题】使用 id3v2 获取 MP3 ID3 (V2) 标签【英文标题】:Get MP3 ID3 (V2) tags using id3v2 【发布时间】:2011-03-12 22:10:39 【问题描述】:

我有点难以理解 V2 ID3 标签的格式。我只是想获取 MP3 文件的“流派”ID3 标签,但 id3v2 实用程序返回的信息比我需要的多,我不明白这些数据代表什么。

例如,我正在使用以下 bash 代码:

id3v2 -l "$FILE" | grep -i "content type"

返回以下内容:

TCON (Content type): Jazz (8)

真的我只是想知道我是否可以安全地假设这将始终是格式,因此我可以安全地执行以下操作吗?:

id3v2 -l "$FILE" | grep -i "content type" | sed "s/^.*: //" | sed "s/ (.*$//"

(这将导致“爵士乐”。)

我正在努力寻找获取 ID3“流派”标签的最佳方法。非常感谢您的任何建议。

【问题讨论】:

【参考方案1】:

我认为假设该行将以 TCON 为前缀是安全的,所以我宁愿搜索它(这也是 i18n 安全的)。

id3v2 -l "$FILE" | sed -n '/^TCON/s/^.*: //p' | sed 's/ (.*//'

(无需运行 grep)


来自 /usr/share/doc/id3lib-3.8.3/doc/id3v2.3.0.txt

TCON

“内容类型”,它 以前被存储为一个字节 仅数值,现在是 数字字符串。您可以使用一个或 ID3v1.1 所做的几种类型 或者,因为类别列表将是 无法准确维护 和最新的类别,定义 你自己的。

对 ID3v1 流派的引用可以 作为第一个字节,输入“(”,后跟一个数字 流派列表(附录 A.)并结束 带有“)”字符。这是 可选地后跟一个 细化,例如“(21)”或 “(4)欧洲迪斯科”。几个参考可以 在同一框架中制作,例如 “(51)(39)”。如果细化应该 应以“(”字符开头 替换为“((”,例如“((我 可以找出任何类型)”或“(55)((我 想...)”。以下新 内容类型在 ID3v2 中定义,并且 以相同的方式实现 numerig 内容类型,例如 “(RX)”。

 RX  Remix
 CR  Cover

【讨论】:

以上是关于使用 id3v2 获取 MP3 ID3 (V2) 标签的主要内容,如果未能解决你的问题,请参考以下文章

在 MP3 ID3v2 标签中设置歌词

如何用 java 读/写 ID3v2 标签?

从 mp3 id3v2 标签中识别歌曲信息

请教mp3ID3V2编码问题:选择utf-16和 iso-8859-1有啥区别?哪个更常用更好?

删除 id3v2 标签 c++

解码长 ID3V2 帧