ID3

ID3 是一種 metadata 容器，多應用於 MP3 格式的音訊檔案中。它可以將相關的曲名、演唱者、專輯、音軌數等資訊儲存在 MP3 檔案中，又稱作「ID3Tags」。

ID3 也被蘋果公司指定為 HTTP Live Streaming 中的時間後設資料，在主要的傳輸流或單獨的音訊傳輸流中作為乘載。

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 檔案儲存後設資料的事實標準。一個開發控制檯遊戲系統的地下組織「傷害控制論」（Damaged Cybernetics）宣佈了格式。因為所有已開發的控制檯 ROM 都沒有任何的辨識資訊，所以他們創造了一個標籤系統來讓其更容易查詢。埃裡克和合作夥伴們將其帶進 MP3 檔案中。這種格式被應用在許多當時格式不明的檔案當中。

ID3v1 標籤總共佔據 128 個位元組，接在檔案的末尾以維持檔案在舊版的媒體播放器中的相容性。有些播放器會在讀取到這些標籤時誤認為音訊檔而產生一些雜音，不過大部分的播放器和幾乎全部的現代播放器都會正確地跳過標籤。標籤有 30 位元組用來儲存標題、演唱者、專輯以及「評論」，4 個位元組儲存年分，以及一個位元組儲存歌曲的藝術型別。預設有 80 種藝術型別，Winamp 後來將其擴充套件到總共 148 種。

在 1997 年，邁克爾・邁克塞勒對 ID3v1 做了一些改進。因為評論欄位實在是小到不可能寫出一些有用的東西，所以他乾脆拿掉兩個位元組來儲存「曲目」。這種標籤被稱作 ID3v1.1。

1.1 格式

字串由空格或零填充。未設定的選項會填入空字串。ID3v1 總長為 128 個位元組。

ID3v1 預設了一系列的藝術型別，以數字作為索引。Winamp 在自家的音樂播放器加入更多選項到該清單中，後來其他播放器也隨之跟進；有一部份的值沒有標準規範。不過，並非全世界都支援 Winamp 的擴充套件清單。有時候，有些播放器只支援到 125 種藝術型別。

1.2 擴充套件標籤

擴充套件標籤（extended tag）是位於 ID3v1 標籤前的額外資料區塊，其將標題、藝術家與專輯欄位各自擴充套件到 60 個位元組長度，提供可自由輸入文字的藝術型別欄位、一位元組大小的曲速（值為 0 到 5）以及 MP3 檔案的起始與結束時間。如果以上的區域都沒有被使用，那麼這個資料區塊就會自動被省略。

有些支援 ID3v1 的程式也可以讀到擴充套件標籤，不過寫入時可能會在擴充套件區塊中留下過舊的值。擴充套件區塊並非官方標準，而且只有少數程式支援，不包含 XMMS 或 Winamp。擴充套件標籤有時也被稱作「補強標籤」（enhanced tag）。

擴充套件標籤總長 227 個位元組，並且位於 ID3v1 標籤之前。

1.3 藝術型別列表

ID3v2

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 和 12──都無法正確的解讀 ID3v2.4 標籤，不過依然能解讀 v2.3 或是更早的版本。

2.1 評分標籤的爭議

對於歌曲的評分，有一個寬鬆的事實標準。大多數應用程式會替所有歌曲展示 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 星， 理由不明。

2.2 ID3v2 章節

ID3v2 章節補遺（ID3v2 Chapter Addendum）出版於 2005 年 12 月，不過至今尚未被廣泛支援。它讓使用者們可以簡單地跳到音訊檔案中特定的地點或樂章，並且可以在播放期間提供同步的圖片與文字的幻燈片。典型的應用程式包括補強播客，而且其可用於 v2.3 或 v2.4 標籤中。

2.3 ID3v2 嵌入圖片

後設資料可以包含以下型別的圖片：

$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

2.4 ID3v2 資料框架規範

注意：

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.