JDP 發表於 2005-5-25 16:17:44

ID3 & APE,兩種常見tag格式簡介

ID3 & APE,兩種常見tag格式簡介

   
N1ran4




網友投稿 轉載請與作者聯繫

  我想大家都明白這裡說的tag指的是什麼。舉個例子,MP3除了保存聲音信息外,還可以同時保存一些和曲目相關的文本信息,比如歌名、演唱者、專輯名等等,這些信息就稱為tag(標籤)信息。和音頻格式一樣,目前tag格式沒有一個統一標準,不同音頻格式使用的tag也不盡相同。現在比較流行的tag格式有ID3和APE(這個APE和平常說的無損音頻格式APE可不一樣),它們各自也還有不同的版本,下面分別做簡要介紹。

●ID3v1 & ID3v1.1

  MP3格式標準裡並沒有特別定義保存曲目相關信息的結構,於是1996年有人提出了一種解決辦法,即在mp3文件末尾添加一些額外的數據(128 byte)來保存曲名、演唱者、專輯名等信息,這就是ID3(v1)。

  ID3v1的字段(field)名稱和每個字段的大小都是固定的,如下所示

    Song title——30 characters
    Artist——30 characters
    Album——30 characters
    Year——4 characters
    Comment——30 characters
    Genre—— byte

  ID3v1.1和ID3v1唯一區別就是多了個Album track字段,實際上是從上面說的Comment字段末尾抽出兩個字節用來存放Album track信息。ID3v1(v1.1)大家一定很熟悉,因為MP3中早已經廣泛的使用ID3,甚至很多人誤以為這是mp3自帶的標準(事實上mp3格式標準裡並不包含ID3)。雖然廣為使用,但ID3v1,ID3v1.1有明顯缺陷。字段名和字段長度都是固定死的,不可擴展,缺乏靈活性。而且30個字符實在十分有限,想必很多人碰到過title或者artist太長被截斷的情況吧。所以有人提出新的ID3v2格式,試圖解決這些問題,擴展ID3的功能。

●ID3v2

  雖然從名稱上ID3v2好像只是ID3v1的一個升級,實際在格式定義上ID3v2和ID3v1完全不同,ID3v2應該算一個全新的tag系統。如果用過WINAMP的ID3 tag editor,就知道ID3v2和ID3v1最直觀的區別是新增加了一些文本字段,比如composer、conductor、media type、copyright message等等。但這不是重點,相較於ID3v1,ID3v2最大的改進應該是極大的增強了靈活性和可括展性,不僅每個字段的長度是可擴展的(再也不必為ID3v1 30個字符的限制而煩惱了),而且用戶還可以很容易的添加自定義字段。

  ID3v2 tag支持unicode,可以包含歌詞(包括同步信息),曲目的volume、balance、equalizer、reverb設置信息,甚至可以插入圖片,支持鏈接外部信息和網頁……還有很多,有興趣的可以看這裡(http://www.id3.org/frames.html)。

  看上去ID3v2功能強大,真是不錯,不過凡事都有兩面性,ID3v2繁多的功能也帶來一個負面問題,就是使得ID3v2太過複雜,實現起來比較困難,一個單純實現所有ID3v2標準功能的程序就得100多K(FB2K主程序也就200多K)。而且有些功能也並不十分合適,比如把圖片嵌入到音頻文件中就不是一個好主意,你需要另外編寫程序從音頻文件中提取圖片,而且也造成播放音頻文件時更容易出錯。

  還有一點值得注意的,ID3v2不像ID3v1存儲在文件末尾,而是插入到音頻文件的最開頭。原本的初衷是考慮網絡上播放文件時可以先接收到相應tag信息。實際應用時卻發現這麼處理是弊大於利。

  1、兼容性變差。時常看到有人反映因為插入ID3v2 tag而造成音頻文件不能正常播放的。
  2、寫入tag速度慢。由於tag放在文件開頭,所以第一次插入tag必須得重寫整個文件,嚴重影響速度,雖然ID3v2採取了的一些方法,避免每次修改tag都必須重寫整個文件(大多數情況下不會,某些情況下還是有可能),但同時也增加了程序處理的複雜度。
  3、耗費臨時空間。由於插入tag得重寫整個文件,如果你向一個大文件添加ID3v2 tag,必須得有充足的磁盤空間,否則就會寫入失敗,甚至會造成原始文件的損壞。
  (註:最新的ID3v2.4標準已經可以選擇把tag存放在文件末尾。)

  所以,ID3v2雖然初看起來不錯,但並不受歡迎,在Hydrogenaudio Forums上用ID3v2做關鍵詞搜索一下就知道了,很多人毫不吝惜的把「SHIT」的光榮稱號授予了ID3v2。事實上目前流行的音頻格式(無論有損無損),只要有自己的tag標準定義的,沒有一個選擇ID3v2;標準版Foobar2000也不支持ID3v2,不過倒是有個第三方插件可以讀寫MP3和AAC的ID3v2 tag。

 儘管如此,ID3v2在硬件支持上還是頗具優勢,目前絕大多數MP3隨身聽只支持ID3v1和ID3v2,如果你有這樣的便攜式硬件設備,那ID3v2幾乎是你的唯一選擇。

●APEv1 & APEv2

  APE也是一種tag格式,如果我沒搞錯,應該是Monkey's Audio的APE最先採用,是不是因此而得名我就不太清楚了。APE用的是APEv1,後來在APEv1基礎上改進又有了APEv2,主要區別就是兩點:

  1、APEv2標準裡增加了一個APE Tags Header
  2、APEv2採用UTF-8編碼,使得可以實現unicode支持

  APE tag具有與ID3v2一樣的靈活性和可括展性,字段名可自定義,字段長度可擴展,同時格式定義又不像ID3v2那麼繁瑣。APE tag的格式很簡單,實現起來也很方便,tag存放位置是可選的,既可以在文件頭也可以在文件尾(推薦在文件尾),所以有不少人對APEv2比較傾瞇。比如,MPC(MusePack)把ID3v1和APEv2作為標準支持的tag,Foobar2000也把APEv2作為標準的tag系統。

    順便說一下:Ogg有自定義的tag格式,叫Vorbis Comment。而MP4/AAC很長一段時間也沒有自己的tag標準,現在好像是MP4已經有了,AAC還沒有,我不是很清楚
WMA的tag系統當然是用微軟自己定義的一套東西

    上面的東西有些是根據我在網上找的一些英文資料翻譯整理了一下,有些是平時逛HA論壇看到一些帖子憑印象寫的,水平有限,如有錯漏還請大家指正。相關鏈接:ID3官方網站(http://www.id3.org/)、APE Tag Version 2.0(http://www.private.uni-jena.de/~pfk/mpp/sv8/apetag.html)。
頁: [1]
查看完整版本: ID3 & APE,兩種常見tag格式簡介