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).