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 雖然制定了有彈性的格式,但在播放器、標籤編輯上仍是多頭馬車,大家都自己搞自己的,導致實行細節上仍會被大家誤會。

Windows 檔案總管內建就支援的資料夾專輯封面顯示

其實在網路上搜尋,還是常常會看到 MP3 歌名亂碼、專輯封面顯示的問題,追根究底問題還是出在檔案裡附加的 ID3 tag 上。從對岸下載來的 MP3、或一些日文歌,在播放器上顯示的歌名大多是簡體和日文,這裡就會有 Tag 的編碼差異 (ANSI or UTF) 還有播放器的支援程度,如果手邊有小螢幕的 MP3/MP4 播放器(或手機),能夠多顯示歌詞、專輯封面之類的,想正確顯示歌名和相關資訊就要手動進行 Tag 的編碼轉換了。我想 iPod 的軟體 (iTune) 應該是有不錯的解決方案,但其他廣大的播放器和軟體還是要自己想辦法轉檔了(難怪之前 Palm Pre 能偷用 iTune 讓用戶大聲稱好)。本來之前一直用的 ID3 Tag Editor,作者不再更新,也不支援 Unicode,更別說啥專輯封面或歌詞的,找了半天,坊間這類完整解決方案並不多:不但能批次更改多檔的 ID3 資訊、最好完整支援 ID3v1, ID3v2 (還有 v2.3, v2.4 之別) 的規格標籤,要能支援各種編碼方式轉換 (ANSI, Unicode, 還有 UTF-8, UTF-16, 什麼 LE, BE、有沒有 BOM ...),還要能處理內嵌歌詞和封面圖檔...實在太複雜了,我用了不少工具都沒辦法一次搞定,要調整出一張張「完美」的 MP3 專輯,真是見麻煩的事啊!以下整理幾套我會用的工具,還有調整的流程,就當做奮戰 ID3 後的一點筆記。

Windows Media Player - 大部分人電腦都有(不過請更新,好像要 10.0 以上才行,以下我是用最新的 v11),也是許多人的播放工具,它的 ID3 編輯與「媒體櫃」的機制相結合,如果以「專輯」的角度來編輯,會直接套用到同一個專輯的所有檔案,這也算是一種批次修改,而每首歌有提供「進階標籤編輯器」,除了常見的標籤(歌名、專輯名稱),也支援歌詞、專輯圖片(含封面、封底、啥一堆的...),感覺實在很強大!不過它雖然支援很多種編碼的「顯示」,但是可不支援「轉換」,所以遇到標籤都是簡體字,看是看得懂啦,不過沒辦法轉換成優美的正體中文。M$ 針對 ID3 也有畫蛇添足加了自訂標籤(像多張專輯圖片、曲目基調、情境..),這些標籤因為不「標準」,所以很多人不認得(像「歌詞」就和千千靜聽的歌詞不相容,「專輯圖片」和我手機的播放器不大相容,大家認定「最後一張圖」是專輯封面,我手機認定的是「第一張」)。此外,雖然 Windows 預設有 Unicode 支援、也看得懂,但是編輯存檔時預設會用系統編碼 (ANSI - Big5,這就是亂碼來源啊),又沒法轉換的情況下,還是要借助轉譯軟體來做。最後,要去熟悉「媒體櫃」的操作邏輯,因為和傳統「資料夾、檔案的觀念不同」,假設你下載一張新專輯、放在媒體櫃不知道的路徑下,要先想辦法讓媒體櫃看到(移到媒體櫃監控的目錄裡),才能開始編輯,而且媒體櫃都是用 ID3 標籤來分類,遇到完全沒有標籤的專輯 (Ex. 自己壓製的 MP3),整理分類就累了。不過我很喜歡它「專輯圖片」編輯的功能,因為它會自動縮圖成 200x200 再塞進去,只要圖片接近正方形(不然縮完會變形),拖照片進去也別擔心會讓 MP3 變得太肥大。

Windows Media Player 的 進階標籤編輯器,很多是 M$ 自行定義的標籤

ConvertZ - 想到繁簡互換 (Big5 <-> GBK),一定會想到好用的 ConvertZ,除了文字檔、剪貼簿、檔名外,它也支援「音頻檔案的標籤轉換」,而且支援「批次」轉檔。裡面也具備單曲的 ID3 編輯修改,不過只支援一些專輯資訊,其他 ID3 標籤(歌詞、封面)當然就看不到,如果單純要調整 ID3 的文字標籤 (v1, v2, 還可以用不同編碼),ConvertZ 是最棒的選擇。

ConvertZ 強大的 ID3 標籤轉碼功能

MP3Tag - 上面提到,這套軟體應該是 Google 搜尋後能找到最常見的 ID3 編輯器,不過我試用後,發現功能到處都不完整。首先 v2 的編碼只能用 UTF-16 (Unicode LE),遇到常見的 ANSI 標籤,一存檔就轉換成 UTF 了,當然你可以改成 v2.3 的 UTF-16、v2.4 UTF-8 甚至 ISO 編碼,反正就會強制轉碼。再來它支援專輯封面、能顯示「多張」圖片,不過「歌詞」是啥它就不認識了。不過,它有相當強大的標籤匯入機制,上面提到很多「專輯編輯」套用的機制,但每首歌的「歌名」該怎麼匯入標籤?所幸很多 MP3 檔名直接就是歌名,只要用 MP3Tag 的「檔案名-> 標籤」轉換功能(用起來有點複雜),這樣就可以處理每首歌的歌名問題。

MP3Tag 的檔案標籤轉換功能(強大但挺複雜的)

千千靜聽 - 和 WMP 一樣,身為一套播放器,能夠顯示甚至編輯各種 ID3 資訊是相當合理的。在單曲的資訊編輯上可以說是最強的,因為除了標籤,包含歌詞、封面統統都能編輯,尤其是歌詞(這是千千靜聽的強項),播放器能自動搜尋下載,還能幫忙「嵌入」,所以要搞歌詞還是千千靜聽最棒。此外在文字標籤上,它也支援編碼轉換(還有繁簡互換),甚至還能增加自訂欄位(自己用爽的),可惜它專輯和批次編輯的功能不好用,不然應該能取代以上的工具。

千千靜聽內建的標籤編輯功能,啥標籤都有

以上並沒有一套能通吃的工具:像專輯編輯 WMP 最好用(而且檔案總管顯示也會一致)、檔案轉碼 ConvertZ 是最好的選擇、歌詞只能用千千靜聽(尤其也用這套播放器來看歌詞的話)、批次的檔案標籤匯入又只好用 MP3Tag,以上工具的運用就要看手邊的媒體檔案內容和自己的需求了。像現在抓來的 MP3,大多是 ANSI 編碼,最好會先經 ConvertZ 轉碼 (v1 用 ANSI,v2 還是用 2.3 的 UTF LE 卡保險),轉完後拿出 WMP 檢視並塞入專輯封面(一般都沒有),最後如果有歌詞需要再用千千靜聽來嵌入(不然另存檔案也行),MP3Tag 就拿來檢查或以備不時之需使用。看起來真麻煩,搞一張專輯要弄很多套軟體,其實只要弄清「媒體櫃」的邏輯,不想搞那麼「完美」一套 WMP 其實也就夠了。

最後,這些 ID3 Tag 也不一定那麼好用,如果想像上面提到,燒一張光碟放到汽車音響播放,那麼還是用軟體清除所有標籤,因為,這些附加的標籤在該播放器上用不到,說不定還會是讓一些播放器「挑歌」的原因哩~

參考資料:
整理你的MP3和ID3標籤 @ 當人真麻煩!
音樂格式的標籤(tag)與編碼 @ 笨頭哥的沒營養文章集

回應: 0

張貼留言

歡迎隨便亂哈啦留言或發表意見,不過要理性不做人身攻擊~匿名的朋友得到回應的速度會比較慢喔~
請注意發問相關的禮貌和規矩,不當留言、和本文無關的回應可能會被直接刪除無視喔!