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在音樂檔案的後設資料標籤領域互相角逐。 MP3並未預設儲存檔案後設資料的方式。在1996年，埃里克·肯普（Eric Kemp）想要在音訊檔案後方加入一小串資料，也因此解決了這個問題。這個方法就是現在的ID3v1，很快就變成了MP3檔案儲存後設資料的事實標準。一個開發控制台遊戲系統的地下組織「傷害控制論」（Damaged Cybernetics）宣布了格式。因為所有已開發的控制台ROM都沒有任何的辨識資訊，所以他們創造了一個標籤系統來讓其更容易查找。埃里克和合作夥伴們將其帶進MP3檔案中。這種格式被應用在許多當時格式不明的檔案當中。 ID3v1標籤總共佔據128個位元組，接在檔案的末尾以維持檔案在舊版的媒體播放器中的兼容性。有些播放器會在讀取到這些標籤時誤認為音訊檔而產生一些雜音，不過大部分的播放器和幾乎全部的現代播放器都會正確地跳過標籤。標籤有30位元組用來儲存標題、演唱者、專輯以及「評論」，4個位元組儲存年分，以及一個位元組儲存歌曲的藝術類型。預設有80種藝術類型，Winamp後來將其擴展到總共148種。 在1997年，邁克爾·邁克塞勒對ID3v1做了一些改進。因為評論欄位實在是小到不可能寫出一些有用的東西，所以他乾脆拿掉兩個位元組來儲存「曲目」。這種標籤被稱作ID3v1.1。 字串由空格或零填充。未設置的選項會填入空字串。ID3v1總長為128個位元組。 ID3v1預設了一系列的藝術類型，以數字作為索引。Winamp在自家的音樂播放器加入更多選項到該清單中，後來其他播放器也隨之跟進；有一部份的值沒有標準規範。不過，並非全世界都支援Winamp的擴展清單。有時候，有些播放器只支援到125種藝術類型。 擴展標籤（extended tag）是位於ID3v1標籤前的額外資料區塊，其將標題、藝術家與專輯欄位各自擴展到60個位元組長度，提供可自由輸入文字的藝術類型欄位、一位元組大小的曲速（值為0到5）以及MP3檔案的起始與結束時間。如果以上的區域都沒有被使用，那麼這個資料區塊就會自動被省略。 有些支援ID3v1的程式也可以讀到擴展標籤，不過寫入時可能會在擴展區塊中留下過舊的值。擴展區塊並非官方標準，而且只有少數程式支援，不包含XMMS或Winamp。擴展標籤有時也被稱作「補強標籤」（enhanced tag）。 擴展標籤總長227個位元組，並且位於ID3v1標籤之前。 1998年，一個由許多貢獻者創造、被稱作ID3v2的新規範問世。雖然繼承了ID3的名字，但其結構與ID3v1大相逕庭。 ID3v2標籤有各種不同的大小，而且經常位於檔案開頭，以運用於串流媒體中。舉例來說，TIT2資料框架包含標題，而WOAR資料框架則包含該藝術家的網站URL連結。資料框架最大可達16MB，不過標籤總大小上限為256MB。標籤也不再侷限於西歐編碼，而支援Unicode，解決了國際化的問題。 文字框架會由一個編碼位元組標記，以得知其是由哪種編碼存入的。 $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種資料框架，而使用者也可以自訂屬於自己的資料框架。標準的資料框架有量測音樂速度、版權、歌詞、任意文字和URL數據等等。ID3v2總共有三種版本： ID3v2.2 v2.2是ID3v2的第一個公開版本。他使用3個字元作為資料框架識別碼，而非4個（舉例來說，其使用TT2而非T1T2）。v2.3和v2.4中大多數的資料框架都在v2.2中有著相似的框架。這個標準已經被認為過時。 ID3v2.3 v2.3將資料框架識別碼擴展到4個字元，並且加入了一些新的資料框架。一個框架可以包含複數值，由空字符分隔。這是目前最廣泛使用的ID3v2標籤。 ID3v2.4 v2.4出版於2000年11月1日，至今仍是最新的版本。其允許文字資料以UTF-8寫入。另外一項新功能是可以選擇是否在檔案末端、其他標籤前面加入標籤，就像ID3v1那樣。 沒有任何版本的Windows檔案總管和Windows Media Player──甚至是最新的Windows 10和WMP 12──都無法正確的解讀ID3v2.4標籤，不過依然能解讀v2.3或是更早的版本。 對於歌曲的評分，有一個寬鬆的事實標準。大多數應用程式會替所有歌曲展示0到5顆星的評分，而星數會以何種形式展示則各有不同。舉例來說，當你在iTunes替歌曲評分的時候，評分並不會嵌入那個音樂檔案的標籤裡，而是會儲存在iTunes自己的後設資料數據庫中。其他的媒體播放器可以嵌入標籤，但方法不一定相同，所以在一個媒體播放器評分的音樂不一定會在其他的播放器以相同的形式展示。 不過，在新版的ID3v2中有一個「Popularimeter」資料框架用來解決這個問題。這個資料框架的識別碼是POPM，而Windows檔案總管、WMP、Winamp、foobar2000、MediaMonkey以及其他軟體都將0-255這範圍內的值大致相同地分為0-5星展示。 以Windows檔案總管讀寫POPM資料框架的標準為例： 語法則為： 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 Chapter Addendum）出版於2005年12月，不過至今尚未被廣泛支援。它讓使用者們可以簡單地跳到音訊檔案中特定的地點或樂章，並且可以在播放期間提供同步的圖片與文字的投影片。典型的應用程式包括補強播客，而且其可用於v2.3或v2.4標籤中。 後設資料可以包含以下類型的圖片： $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 注意： 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」似乎是瑞典的種族歧視笑話 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）.  MP3 APEv2 Mp3tag ID3官方网站（英文）