2009-08-31

MP3 的身份識別機制 - ID3 Tag

數位音樂檔的風行已經很多年了,近來最被大家接受和廣為散布的格式就是 MP3,主要是因為它容量小、普及率高還有眾多軟硬體播放器的支援,即便現在有更多更好的格式 (ape, ogg ..),MP3 也還是最大宗。以往 MP3 還是習慣用電腦軟體來播放,後來很多播放器的支援,也可以將 MP3 燒成光碟片丟進音響來放(我小黑的汽車音響也行)。除了光碟,這些播放器也開始支援外接記憶卡甚至 USB 儲存裝置當媒體,更有甚者,直接作成內建記憶體的隨身播放器,只要丟進 MP3 檔案,這些越做越小的播放器就能直接播放了,舉凡手機、PDA、專用的播放器(MP3 Player、iPod、Walkman),都能直接識別播放音樂。但越來越多智慧裝置和播放軟體的支援,使用者要求的就不只有「音樂」,像播放器上最好能夠顯示歌名、顯示歌手和專輯封面名稱,愛聽流行歌曲的,還希望能顯示歌詞,這和我們一開始認知單純的「音樂檔案」不一樣了,在附加資訊的需求上越來越多樣化,要在 MP3 檔案加上這些資訊,又不希望有「額外」的檔案(就像影片還要掛字幕檔一樣..),勢必要直接在檔案上直接附加歌曲的資訊,這些 metadata,為了一統播放器環境,也必須有個標準和規格,這就是 ID3 Tag 的由來。(嗯!APE, OGG 甚至 WMA 其實也都有自己彼此的 Tag..)

所謂 ID3,原意是 IDentify an MP3,也就是用來識別 MP3 用的資訊,1996 年被提出來的時候,作法也很簡單,就直接在傳統 MP3 音樂檔後面附加 128 bytes 來擺資訊,區段和大小被固定,欄位分別是歌名 (Title, 30 characters), 歌手 (Artist, 30 characters), 專輯 (Album, 30 characters), 年份 (Year, 4 characters), 註解 (Comment, 30 characters) 和音樂種類 (Genre, 1 byte),而這就是最早的 ID3v1。後來又從 Comment 欄位偷兩個 bytes 當作 Track 編號,改版成 ID3v1.1,之後就被大量使用了。這些附加資訊和 MP3 音樂壓縮標準一點關係都沒有,算是後來「好事之徒」塞進去又被發揚光大的,也因為制定的過程很簡單草率,連帶這些資訊沒有擴充彈性(光歌名 30 個字元的限制,換成中文剩一半,掐頭去尾很容易就捉襟見肘了~),又不支援 Unicode (所以一些日文字和簡體字就會有亂碼),使用上問題重重。後來脫胎換骨,制定出新的標準 ID3v2,架構上完全不同,不但欄位可定義的數量變爆多(標籤內容可以參考規格)、欄位資料長度不限,甚至可以塞入 binary 資料!換句話說,不但可以塞入不限格式長度的資料,甚至可以塞進「歌詞」(文字檔格式, Lyrics3v2),還有專輯封面的圖檔!當然這件事其實也行之有年了,我只算模模糊糊知道(因為我愛用的播放器「千千靜聽」很早就都能編輯標籤、嵌入歌詞和專輯封面),加上播放軟體太聰明,自己會判斷語系、解讀不同版本的 ID3 Tag,長久以來我就一直聽一直用,從來也沒去搞清楚過。直到最近在玩新手機,聽音樂時發現怎麼「專輯封面」圖檔總是空白或錯誤,開始認真去找原因,這也才瞭解 ID3 標籤版本的差異和格式。

單純搞歌名、專輯和歌手名稱等標籤都是小事,但專輯封面圖檔比較麻煩。上面提到新的 ID3v2「不限欄位的內容和長度」,所以如果 MP3 專輯封面圖檔有 3MB,那麼用一些編輯軟體塞入封面檔、整個專輯所有 MP3 檔案容量大小就統統都爆增 3MB,而這 3MB 的圖檔也沒機會去完整瀏覽到,因此最好還是先縮圖再去指定。別忘了大家愛用的 Windows 內建就有 ID3v2 的支援啊,當該 MP3 專輯有指定封面,該目錄在檔案總管縮圖模式就直接是顯示「專輯封面」,既然這樣都有支援,那麼 Windows Media Player 一定也能播放、甚至編輯這些 ID3 資訊吧!查了資料,新版 Media Player 果然支援「專輯封面」圖檔的匯入,不過會限制圖片大小在 200x200,拖大圖進去會「自動縮圖」再匯入 ID3 標籤,實在太方便啦!所以我那些要丟進手機播放的 MP3,都被新的 WMP 11 處理過專輯封面,才放進手機來播放。不過過程中發現了一個狀況:為什麼有些專輯我更改封面圖檔,在電腦裡看都是新的,但手機播放看到的還是舊的封面圖咧?搞半天還是摸不清頭緒~後來找了網路上最被推薦的 ID3 標籤編輯工具:MP3Tag,仔細去瞭解 ID3 標籤的所有內容,原來那些封面沒被更新的 MP3 檔案,裡面專輯封面的欄位裡都有「多張」圖片啊!Windows 和千千靜聽都是讀取「最後一個圖檔」,而我手機讀的是「第一個」,難怪怎麼看兩邊都不一樣啊!用 WMP 去更新專輯封面,靠,它是縮圖後就一直往裡面「塞圖」進去,播放器也都不能顯示有多張圖,直到我用 MP3Tag 檢查才真相大白!這個 MP3 專輯封面不能更新的問題也困擾了我好幾天,都是這個「聰明」的 WMP 搞的!不過,這裡也反映出,ID3v2 雖然制定了有彈性的格式,但在播放器、標籤編輯上仍是多頭馬車,大家都自己搞自己的,導致實行細節上仍會被大家誤會。