ID3
ID3是一种metadata容器,多应用于MP3格式的音频文件中。它可以将相关的曲名、演唱者、专辑、音轨数等信息存储在MP3文件中,又称作“ID3Tags”。
ID3也被苹果公司指定为HTTP Live Streaming中的时间后设资料,在主要的传输流或单独的音频传输流中作为PID乘载。
ID3一般位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息就被称为ID3信息。ID3信息分为两个版本,v1和v2版。其中: v1版的ID3在mp3文件的末尾128字节,以TAG三个字符开头,后面跟上歌曲信息。v1.1版将“评论”字段缩短,增设“曲目”字段。v2版则和v1版截然不同,其通常将一系列可扩展的资料框架(frames)存储在文件开头,而每一块资料框架都有当作识别标签的、大小约3到4个字节的字符串,以及其所存储的资料。在最新的ID3v2.4版本中,总共宣告有83种资料框架,而用户也可以自定义属于自己的资料框架。目前总共有三种版本的ID3v2,其中每一版都有对资料框架的定义进行扩展。
ID3是mp3文件后设资料自然而然发展出来的事实标准;其成品并没有包含任何的实质规范,也没有任何组织给予其正式的批准或认证。其与APE tag在音乐文件的后设资料标签领域互相角逐。
ID3v1
MP3并未默认存储文件后设资料的方式。在1996年,埃里克·肯普(Eric Kemp)想要在音频档案后方加入一小串资料,也因此解决了这个问题。这个方法就是现在的ID3v1,很快就变成了MP3文件存储后设资料的事实标准[1]。一个开发控制台游戏系统的地下组织“伤害控制论”(Damaged Cybernetics)宣布了格式。因为所有已开发的控制台ROM都没有任何的识别信息,所以他们创造了一个标签系统来让其更容易查找。埃里克和合作伙伴们将其带进MP3文件中。这种格式被应用在许多当时格式不明的文件当中。
ID3v1标签总共占据128个字节,接在文件的末尾以维持文件在旧版的媒体播放器中的兼容性。有些播放器会在读取到这些标签时误认为音频档而产生一些杂音,不过大部分的播放器和几乎全部的现代播放器都会正确地跳过标签。标签有30字节用来存储标题、演唱者、专辑以及“评论”,4个字节存储年分,以及一个字节存储歌曲的艺术类型。默认有80种艺术类型,Winamp后来将其扩展到总共148种。
在1997年,迈克尔·迈克塞勒对ID3v1做了一些改进。因为评论字段实在是小到不可能写出一些有用的东西,所以他干脆拿掉两个字节来存储“曲目”。这种标签被称作ID3v1.1[1]。
格式
字符串由空格或零填充。未设置的选项会填入空串。ID3v1总长为128个字节[2]。
区域 | 长度 | 描述 |
---|---|---|
开头 | 3 | “TAG”,标签。 |
标题 | 30 | 歌曲标题,最多30个英文字符。 |
艺术家 | 30 | 作曲或演唱者的名字,最多30个英文字符。 |
专辑 | 30 | 专辑名称,最多30个英文字符。 |
年分 | 4 | 西元年分,四个数字。 |
评论 | 28[3]或30 | 就是评论。 |
零字节[3] | 1 | 如果有存储曲目,那么这个字节会存储一个二进制的0。 |
曲目[3] | 1 | 这首歌在该专辑中的曲目,或者为0。若前一个字节非零,则此栏内容无效。 |
艺术类型 | 1 | 一系列艺术类型清单中的编号数,默认为255。 |
ID3v1默认了一系列的艺术类型,以数字作为索引。Winamp在自家的音乐播放器加入更多选项到该清单中,后来其他播放器也随之跟进;有一部分的值没有标准规范[4]。不过,并非全世界都支持Winamp的扩展清单。有时候,有些播放器只支持到125种艺术类型[5]。
扩展标签
扩展标签(extended tag)是位于ID3v1标签前的额外资料区块,其将标题、艺术家与专辑字段各自扩展到60个字节长度,提供可自由输入文字的艺术类型字段、一字节大小的曲速(值为0到5)以及MP3文件的起始与结束时间。如果以上的区域都没有被使用,那么这个资料区块就会自动被省略。
有些支持ID3v1的程序也可以读到扩展标签,不过写入时可能会在扩展区块中留下过旧的值。扩展区块并非官方标准,而且只有少数程序支持,不包含XMMS或Winamp。扩展标签有时也被称作“补强标签”(enhanced tag)。
扩展标签总长227个字节,并且位于ID3v1标签之前。
区域 | 长度 | 描述 |
---|---|---|
开头 | 4 | “TAG+”,代表其为扩展标签。 |
标题 | 60 | 歌曲标题,最多60个英文字符。 |
艺术家 | 60 | 作曲或演唱者的名字,最多60个英文字符。 |
专辑 | 60 | 专辑名称,最多60个英文字符。 |
曲速 | 1 | 0:未设置,1:慢板,2:中板,3:快板,4:极快 |
艺术类型 | 30 | 可自由输入文字的艺术类型区块。 |
开始时间 | 6 | 音乐开始的时间:mmm:ss |
结束时间 | 6 | 音乐结束的时间:mmm:ss |
艺术类型列表
编号 | 英文代码 | 中文维基百科 | Winamp扩展 |
---|---|---|---|
0 | Blues | 蓝调 | |
1 | Classic Rock | 古典摇滚乐 | |
2 | Country | 乡村音乐 | |
3 | Dance | 舞曲 | |
4 | Disco | 迪斯科 | |
5 | Funk | 放克 | |
6 | Grunge | 油渍摇滚 | |
7 | Hip-Hop | 嘻哈 | |
8 | Jazz | 爵士乐 | |
9 | Metal | 重金属音乐 | |
10 | New Age | 新世纪音乐 | |
11 | Oldies | Oldies | |
12 | Other | ||
13 | Pop | 流行 (音乐类型) | |
14 | R&B | 节奏布鲁斯 | |
15 | Rap | 饶舌 | |
16 | Reggae | 雷鬼音乐 | |
17 | Rock | 摇滚乐 | |
18 | Techno | 铁克诺音乐 | |
19 | Industrial | Industrial | |
20 | Alternative | 另类摇滚 | |
21 | Ska | 斯卡曲风 | |
22 | Death Metal | 死亡金属音乐 | |
23 | Pranks | Pranks | |
24 | Soundtrack | 原声音乐 | |
25 | Euro-Techno | Euro-Techno | |
26 | Ambient | 氛围音乐 | |
27 | Trip-Hop | 神游舞曲 | |
28 | Vocal | 声乐 | |
29 | Jazz+Funk | 爵士乐+放克 | |
30 | Fusion | 融合爵士乐 | |
31 | Trance | 出神音乐 | |
32 | Classical | 古典音乐 | |
33 | Instrumental | 器乐 | |
34 | Acid | Acid | |
35 | House | 浩室音乐 | |
36 | Game | Game | |
37 | Sound Clip | 音效及声音片段 | |
38 | Gospel | 福音音乐 | |
39 | Noise | 噪音音乐 | |
40 | AlternRock | AlternRock | |
41 | Bass | 电贝斯 | |
42 | Soul | 灵魂乐 | |
43 | Punk | 朋克文化 | |
44 | Space | Space | |
45 | Meditative | 冥想音乐 | |
46 | Instrumental Pop | Instrumental Pop | |
47 | Instrumental Rock | Instrumental Rock | |
48 | Ethnic | Ethnic | |
49 | Gothic | Gothic | |
50 | Darkwave | Darkwave | |
51 | Techno-Industrial | Techno-Industrial | |
52 | Electronic | 电子音乐 | |
53 | Pop-Folk | Pop-Folk | |
54 | Eurodance | 欧陆舞曲 | |
55 | Dream | Dream | |
56 | Southern Rock | Southern Rock | |
57 | Comedy | 喜剧 | |
58 | Cult | Cult | |
59 | Gangsta | Gangsta | |
60 | Top 40 | Top 40 | |
61 | Christian Rap | Christian Rap | |
62 | Pop/Funk | 流行 (音乐类型)/放克 | |
63 | Jungle | 早期丛林舞曲 | |
64 | Native American | Native American | |
65 | Cabaret | 卡巴莱 | |
66 | New Wave | 新浪潮 | |
67 | Psychadelic | Psychadelic | |
68 | Rave | 锐舞 | |
69 | Showtunes | Showtunes | |
70 | Trailer | Trailer | |
71 | Lo-Fi | Lo-Fi | |
72 | Tribal | Tribal | |
73 | Acid Punk | Acid Punk | |
74 | Acid Jazz | 酸爵士 | |
75 | Polka | 波尔卡 | |
76 | Retro | Retro | |
77 | Musical | Musical | |
78 | Rock & Roll | 摇滚 | |
79 | Hard Rock | 硬式摇滚 | |
80 | Folk | 民俗音乐 | 是 |
81 | Folk-Rock | 民谣摇滚 | 是 |
82 | National Folk | National Folk | 是 |
83 | Swing | Swing | 是 |
84 | Fast Fusion | Fast Fusion | 是 |
85 | Bebob | 咆勃爵士乐 | 是 |
86 | Latin | 拉丁舞 | 是 |
87 | Revival | Revival | 是 |
88 | Celtic | 凯尔特音乐 | 是 |
89 | Bluegrass | 蓝草音乐 | 是 |
90 | Avantgarde | 前卫 | 是 |
91 | Gothic Rock | 哥德摇滚 | 是 |
92 | Progressive Rock | 前卫摇滚 | 是 |
93 | Psychedelic Rock | 迷幻摇滚 | 是 |
94 | Symphonic Rock | 前卫摇滚 | 是 |
95 | Slow Rock | Slow Rock | 是 |
96 | Big Band | 大乐团 | 是 |
97 | Chorus | 副歌 | 是 |
98 | Easy Listening | Easy Listening | 是 |
99 | Acoustic | 原音乐 | 是 |
100 | Humour | 幽默 | 是 |
101 | Speech | 语音 | 是 |
102 | Chanson | 香颂 | 是 |
103 | Opera | 歌剧 | 是 |
104 | Chamber Music | 室内乐 | 是 |
105 | Sonata | 奏鸣曲 | 是 |
106 | Symphony | 交响曲 | 是 |
107 | Booty Bass | Booty Bass | 是 |
108 | Primus | 讽刺 | 是 |
109 | Porn Groove | Porn Groove | 是 |
110 | Satire | Satire | 是 |
111 | Slow Jam | Slow Jam | 是 |
112 | Club | 电子舞曲 | 是 |
113 | Tango | 探戈 | 是 |
114 | Samba | 桑巴 | 是 |
115 | Folklore | 民俗学 | 是 |
116 | Ballad | 谣曲 | 是 |
117 | Power Ballad | Power Ballad | 是 |
118 | Rhythmic Soul | Rhythmic Soul | 是 |
119 | Freestyle | Freestyle | 是 |
120 | Duet | Duet | 是 |
121 | Punk Rock | 朋克摇滚 | 是 |
122 | Drum Solo | Drum Solo | 是 |
123 | A capella | 无伴奏合唱 | 是 |
124 | Euro-House | 浩室音乐 | 是 |
125 | Dance Hall | Dance Hall | 是 |
ID3v2
1998年,一个由许多贡献者创造、被称作ID3v2的新规范问世[6]。虽然继承了ID3的名字,但其结构与ID3v1大相径庭。
ID3v2标签有各种不同的大小,而且经常位于文件开头,以运用于流媒体中。举例来说,TIT2资料框架包含标题,而WOAR资料框架则包含该艺术家的网站URL链接。资料框架最大可达16MB,不过标签总大小上限为256MB。标签也不再局限于西欧编码,而支持Unicode,解决了国际化的问题。
文字框架会由一个编码字节标记,以得知其是由哪种编码存入的[7]。
$00 – ISO-8859-1 (LATIN-1, Identical to ASCII for values smaller than 0x80). $01 – UCS-2 (UTF-16 encoded Unicode with BOM), in ID3v2.2 and ID3v2.3. $02 – UTF-16BE encoded Unicode without BOM, in ID3v2.4. $03 – UTF-8 encoded Unicode, in ID3v2.4.
不过,在使用地区编码而非统一码的时候,还是很容易出现乱码。特别是有些使用Shift JIS编码的日文编辑者经常造成一些灾难性的后果:因为并非标准支持,所以不管地区设置为何,都无法运用于任何符合标准的软件;因为日本以外的地区几乎不支持Shift JIS,所以也无法在日本以外的地区使用;甚至连日本境内也并非通用,因为其取决于软件与设置。
在最新版ID3v2.4,总共宣告了83种资料框架[8],而用户也可以自定义属于自己的资料框架。标准的资料框架有量测音乐速度、著作权、歌词、任意文字和URL数据等等。ID3v2总共有三种版本:
- ID3v2.2
- v2.2是ID3v2的第一个公开版本。他使用3个字符作为资料框架标识符,而非4个(举例来说,其使用TT2而非T1T2)。v2.3和v2.4中大多数的资料框架都在v2.2中有着相似的框架。这个标准已经被认为过时[9]。
- ID3v2.3
- v2.3将资料框架标识符扩展到4个字符,并且加入了一些新的资料框架。一个框架可以包含复数值,由空字符分隔。这是目前最广泛使用的ID3v2标签[10]。
- ID3v2.4
- v2.4出版于2000年11月1日,至今仍是最新的版本。其允许文字资料以UTF-8写入。另外一项新功能是可以选择是否在文件末端、其他标签前面加入标签,就像ID3v1那样[11]。
- 没有任何版本的Windows资源管理器和Windows Media Player──甚至是最新的Windows 10和WMP 12──都无法正确的解读ID3v2.4标签,不过依然能解读v2.3或是更早的版本[12][13]。
评分标签的争议
对于歌曲的评分,有一个宽松的事实标准。大多数应用程序会替所有歌曲展示0到5颗星的评分,而星数会以何种形式展示则各有不同。举例来说,当你在iTunes替歌曲评分的时候,评分并不会嵌入那个音乐文件的标签里,而是会存储在iTunes自己的后设资料数据库中。其他的媒体播放器可以嵌入标签,但方法不一定相同,所以在一个媒体播放器评分的音乐不一定会在其他的播放器以相同的形式展示。
不过,在新版的ID3v2中有一个“Popularimeter”资料框架用来解决这个问题。这个资料框架的标识符是POPM,而Windows资源管理器、WMP、Winamp、foobar2000、MediaMonkey以及其他软件都将0-255这范围内的值大致相同地分为0-5星展示。
以Windows资源管理器读写POPM资料框架的标准为例:
星数 | 读取 | 写入 |
---|---|---|
5 | 224-225 | 255 |
4 | 160-223 | 196 |
3 | 96-159 | 128 |
2 | 32-95 | 64 |
1 | 1-31 | 1 |
0 | 0 | 0 |
语法则为:
Windows Media Player 9 Series | 255 | 0
其中0是POPM的计数器部分,不要与PCNT资料框架的播放次数混淆。不过如果有应用程序支持粒度,一颗星的话会写入1,而2到31则会是一颗星之下的粒度点。值得一提的是,Windows所使用的ID字符串并非规范所要求的电子邮件地址。而且,直到Windows 7和WMP 12的Windows资源管理器和WMP都有一个漏洞是:如果你使用以上软件替音乐评分的话,任何有关回放增益的标签都会损坏[来源请求]。WMP也以上述方式读写相同的值,除了4到5星之间有着些微莫名的不同。WMP使用221和222来区隔4、5星,理由不明(页面存档备份,存于互联网档案馆)。
ID3v2章节
ID3v2章节补遗(ID3v2 Chapter Addendum)出版于2005年12月,不过至今尚未被广泛支持。它让用户们可以简单地跳到音频档案中特定的地点或乐章,并且可以在播放期间提供同步的图片与文字的幻灯片。典型的应用程序包括补强播客,而且其可用于v2.3或v2.4标签中[14]。
ID3v2嵌入图片
后设资料可以包含以下类型的图片[15]:
$00 其他 $01 32x32 pixels 'file icon' (PNG only) $02 Other file icon $03 Cover (front) $04 Cover (back) $05 Leaflet page $06 Media (e.g. label side of CD) $07 Lead artist/lead performer/soloist $08 Artist/performer $09 Conductor $0A Band/Orchestra $0B Composer $0C Lyricist/text writer $0D Recording Location $0E During recording $0F During performance $10 Movie/video screen capture $11 A bright coloured fish $12 Illustration $13 Band/artist logotype $14 Publisher/Studio logotype
ID3v2资料框架规范
英文描述 | 中文描述 | 资料框架 | |
---|---|---|---|
v2.3 | v2.4 | ||
Audio encryption | 音频加密 | AENC | |
Audio seek point index | 音频搜索点索引 | 不适用 | ASPI |
Attached picture | 附图 | APIC | |
Comments | 评论 | COMM | |
Commercial frame | 商业用资料框架 | COMR | |
Encryption method registration | 加密方式注册 | ENCR | |
Equalization | 等化 | EQUA | EQU2 |
Event timing codes | 事件时间代码 | ETCO | |
General encapsulated object | 一般封装对象 | GEOB | |
Group identification registration | 组织识别注册 | GRID | |
Involved people list | 相关人员列表 | IPLS | TIPL |
Linked information | 链接信息 | LINK | |
Music CD identifier | 音乐光盘标识符 | MCDI | |
MPEG location lookup table | MPEG位置查询表 | MLLT | |
Ownership frame | 所有权 | OWNE | |
Private frame | 隐私权 | PRIV | |
Play counter | 播放次数 | PCNT | |
Popularimeter | 评等 | POPM | |
Position synchronisation frame | 位置同步 | POSS | |
Recommended buffer size | 推荐缓冲器大小 | RBUF | |
Relative volume adjustment | 相对音量调整 | RVAD | RVA2 |
Reverb | 混响 | RVRB | |
Seek frame | 搜索用 | 不适用 | SEEK |
Signature frame | 签名用 | 不适用 | SIGN |
Synchronized lyric/text | 同步歌词、文字 | SYLT | |
Synchronized tempo codes | 同步节拍代码 | SYTC | |
Album/Movie/Show title | 专辑/电影/节目标题 | TALB | |
Beats per minute (BPM) | 量度音乐速度 | TBPM | |
Composer | 作曲者 | TCOM | |
Content type | 内容类型 | TCON | |
Copyright message | 著作权信息 | TCOP | |
Date | 日期 | TDAT | TDRC |
Encoding time | 编码时间 | 不适用 | TDEN |
Playlist delay | 播放清单中的间隔时间 | TDLY | |
Recording time | 音频纪录时间 | 不适用 | TDRC |
Release time | 音频发行时间 | 不适用 | TDRL |
Tagging time | 音频被标记时间 | 不适用 | TDTG |
Encoded by | 编码者 | TENC | |
Lyricist/Text writer | 作词者 | TEXT | |
File type | 文件类型 | TFLT | |
Time | 包含记录用的时间 | TIME | TDRC |
Content group description | 组群描述 | TIT1 | |
Title/songname/content description | 标题 | TIT2 | |
Subtitle/Description refinement | 字幕 | TIT3 | |
Initial key | 初始调 | TKEY | |
Language(s) | 语言 | TLAN | |
Length | 长度 | TLEN | |
Musician credits list | 音乐家与乐器对照 | 不适用 | TMCL |
Media type | 属性 | TMED | |
Mood | 情境 | 不适用 | TMOO |
Original album/movie/show title | 原始标题 | TOAL | |
Original filename | 源文件案名称 | TOFN | |
Original lyricist(s)/text writer(s) | 原始作词者 | TOLY | |
Original artist(s)/performer(s) | 原始演唱者 | TOPE | |
Original release year | 年分 | TORY | TDOR |
File owner/licensee | 著作权 | TOWN | |
Lead performer(s)/Soloist(s) | 指挥 | TPE1 | |
Band/orchestra/accompaniment | 乐团/乐队/伴奏 | TPE2 | |
Conductor/performer refinement | 详细参与演出者 | TPE3 | |
Interpreted, remixed, or otherwise modified by | 后制 | TPE4 | |
Part of a set | Part of a set | TPOS | |
Produced notice | Produced notice | 不适用 | TPRO |
Publisher | 发行者 | TPUB | |
Track number/Position in set | 曲目 | TRCK | |
Recording dates | 建立日期 | TRDA | TDRC |
Internet radio station name | Internet radio station name | TRSN | |
Internet radio station owner | Internet radio station owner | TRSO | |
Size | 大小 | TSIZ | 抛弃 |
Album sort order | 依专辑排序 | 不适用 | TSOA |
Performer sort order | 依演出者排序 | 不适用 | TSOP |
Title sort order | 依标题排序 | 不适用 | TSOT |
International Standard Recording Code (ISRC) | 国际标准音像制品编码 | TSRC | |
Software/Hardware and settings used for encoding | 编码环境设置 | TSSE | |
Set subtitle | 设置字幕 | 不适用 | TSST |
Year | 年分 | TYER | TDRC |
User defined text information frame | 自定义文字 | TXXX | |
Unique file identifier | 文件标识符 | UFID | |
Terms of use | 使用条款 | USER | |
Unsynchronized lyric/text transcription | 异步歌词转录 | USLT | |
Commercial information | 商业信息 | WCOM | |
Copyright/Legal information | 著作权信息 | WCOP | |
Official audio file webpage | 官方音频档案网站 | WOAF | |
Official artist/performer webpage | 作者URL | WOAR | |
Official audio source webpage | 官方音源URL | WOAS | |
Official internet radio station homepage | Official internet radio station homepage | WORS | |
Payment | 付费URL | WPAY | |
Publishers official webpage | 发行者官网 | WPUB | |
User defined URL link frame | 自定义URL | WXXX |
注意:
- IPLS of ID3v2.3 maps both to TIPL (the "involved people list") and to TMCL (the "musician credits list").
- TDRC (recording time) consolidates TDAT (date), TIME (time), TRDA (recording dates), and TYER (year).
- TCOM, TEXT, TOLY, TOPE, and TPE1 can contain multiple values separated by a foreslash ("/").[来源请求]
Version 2.4 of the specification prescribes that all text fields (the fields that start with a T, except for TXXX) can contain multiple values separated by a null character. The null character varies by character encoding.
注释
- ^ 1.0 1.1 Practical Common Lisp (页面存档备份,存于互联网档案馆), p. 335.
- ^ 关于ID3v1在Python中的应用,请看Dive Into Python, Chapter 5. Objects and Object-Orientation (页面存档备份,存于互联网档案馆)
- ^ 3.0 3.1 3.2 曲目会存储在评论区的最后两个字节中。如果评论有29或30个字符那么长,就无法存储曲目。
- ^ “Primus”是单一乐团而非艺术类型,而“Negerpunk”似乎是瑞典的种族歧视笑话
- ^ Genre List from ID3v1. [2016-11-13]. (原始内容存档于2015-11-21).
- ^ Contributors - ID3.org. [2016-11-13]. (原始内容存档于2016-12-03).
- ^ id3v2-00 - ID3.org. [2016-11-13]. (原始内容存档于2016-11-24).
- ^ ID3v2.4.0 Native Frames. [2012-12-27]. (原始内容存档于2012-12-21).
- ^ Nilsson, Martin. ID3 Developer Information. ID3.org. [9 April 2011]. (原始内容存档于2012-08-26).
- ^ ID3 tag version 2.3.0. [2016-11-13]. (原始内容存档于2016-11-17).
- ^ ID3 tag version 2.4.0 - Native Frames. [2016-11-13]. (原始内容存档于2016-10-28).
- ^ Bright, Peter. Music and Video in Windows 8: a work in progress. arstechnica.com. 28 October 2012 [2012-10-29]. (原始内容存档于2012-10-30).
- ^ Microsoft support community. 11 January 2011 [2016-11-13]. (原始内容存档于2014-07-12).
- ^ Newell, C. ID3v2 Chapter Frame Addendum. ID3.org. 2 December 2005 [2008-02-06]. (原始内容存档于2012-03-15).
- ^ id3v2.3.0 - ID3.org. [2016-11-13]. (原始内容存档于2015-11-21).