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.
注释
- Practical Common Lisp (页面存档备份,存于), p. 335.
- 關於ID3v1在Python中的應用,請看Dive Into Python, Chapter 5. Objects and Object-Orientation (页面存档备份,存于)
- 曲目會儲存在評論區的最後兩個位元組中。如果評論有29或30個字元那麼長,就無法儲存曲目。
- 「Primus」是單一樂團而非藝術類型,而「Negerpunk」似乎是瑞典的種族歧視笑話
- . [2016-11-13]. (原始内容存档于2015-11-21).
- . [2016-11-13]. (原始内容存档于2016-12-03).
- . [2016-11-13]. (原始内容存档于2016-11-24).
- . [2012-12-27]. (原始内容存档于2012-12-21).
- Nilsson, Martin. . ID3.org. [9 April 2011]. (原始内容存档于2012-08-26).
- . [2016-11-13]. (原始内容存档于2016-11-17).
- . [2016-11-13]. (原始内容存档于2016-10-28).
- Bright, Peter. . arstechnica.com. 28 October 2012 [2012-10-29]. (原始内容存档于2012-10-30).
- . 11 January 2011 [2016-11-13]. (原始内容存档于2014-07-12).
- Newell, C. . ID3.org. 2 December 2005 [2008-02-06]. (原始内容存档于2012-03-15).
- . [2016-11-13]. (原始内容存档于2015-11-21).