精華區beta EZsoft 關於我們 聯絡資訊
本文同步發表在AudioPlayer板,歡迎大家一起討論。 以下只討論Windows平台上的現況,歡迎其他平台使用者也來寫個一篇XD 文章內含大量連結,請多包涵Orz 首先,先從ID3 TAG到底是什麼標準講起: 先看看這篇文章→http://forum.slime.com.tw/post877754-1.html 再看看這篇:http://liuawei.wordpress.com/2008/05/27/id3tag-ubuntu/ 大致上ID3 TAG演進的過程就是這樣, 上面那篇文章告訴我們目前建議以ID3v2.3來編輯TAG,比較保險, 因為有些MP3 Player還不支援使用強制使用UTF-8的v2.4, 而Windows Explorer跟Windows Media Player又不認得UTF-8的TAG, 也許你想問那Vista這方面有沒有改進啊? 很高興的是,沒有!有圖為證:http://echopic.com/wes (2-09 昨天是ID3v2.3,可以正確抓到縮圖跟TAG資訊,2-07 只能抱著你就真的爆了) 所以我們又少了一股升級到Vista的好誘因XDDD 前幾天我心血來潮,想知道官方ID3v2的規格有沒有關於Multi Artists的寫入支援, 因為整理TAG的時候看到很多合唱曲,中間的分隔符號都沒有統一(對,我很龜毛Orz) 想說找找看官方標準對這方面是怎麼定義的:http://www.id3.org/id3v2.3.0 「TPE1 The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is used for the main artist(s). They are seperated with the "/" character. 」 也就是說ID3v2.3是用/符號來分隔每個演出者,不過其實這個符號挑的不是很好, 因為有個澳洲天團叫做『AC/DC』啊XDDD http://en.wikipedia.org/wiki/AC/DC MediaMonkey特地為了這個團體寫了個例外處理。 http://www.mediamonkey.com/forum/viewtopic.php?f=3&t=27975 Windows Media Player也有類似的處理,不過foobar2000沒有就是,會變成AC, DC。 那新的v2.4對這個有沒有更好的辦法呢?http://www.id3.org/id3v2.4.0-frames 「All text information frames supports multiple strings, stored as a null separated list, where null is reperesented by the termination code for the charater encoding.」 改用NULL來作分隔字元,不過這個也造成了不少的問題就是。 分隔字元的討論已經吵很久了: http://www.hydrogenaudio.org/forums/index.php?showtopic=61317 那麼底下就來發表一下我測試的ID3v2.3跟ID3v2.4分隔字元的相容性測試: 1. Windows Media Player: v2.3,圖:http://echopic.com/weu,在參與演出者那邊用分號取代/做隔開, 表示它認得這是兩個演出者,不過在媒體櫃裡面的演出者只新增一個梁靜茹, 而沒有新增一個光良,WLM的Now Playing也只接收到梁靜茹而沒有光良。 v2.4,如前所述,完全認不得UTF-8的TAG。 2. Foobar2000: v2.3,可以識別,會以A, B的方式顯示,編輯時則是A;B,用;表示分隔。 但是沒對AC/DC作例外處理。 v2.4,可以識別,一樣以A, B的方式顯示,編輯時則是A;B,用;表示分隔。 用foo_msnalt送上WLM的Now Playing也是顯示「A, B」,非常棒! 3. iTunes: v2.3,不理會分隔直接顯示/。 v2.4,會將NULL字元以空白字元顯示。變成「梁靜茹 光良」, 送到WLM的Now Playing一樣只顯示梁靜茹。 但是直接新增v2.4的檔案iTunes無法加入。 不過將已經加入資料庫後的檔案修改成v2.4後可以存取,但是用簡介開啟 來看雖然看得到v2.4的識別,但是演出者欄位也只顯示梁靜茹。 4. Songbird: v2.3,跟iTunes一樣直接不理會分隔。 v2.4,也跟iTunes一樣會以空白字元顯示,但是透過LiveTweeter送到 WLM的顯示有連光良一起亮相。 雖然Songbird預設編輯的就是v2.4,但開發者告訴我目前只是會把遇到的 第一個Null略過顯示空白字元,因為資料庫結構還不允許Multi artists, 所以再多來一個Null就會爆炸。 5. MediaMonkey: v2.3,可以識別,且有對AC/DC作例外處理。 v2.4,可以識別。可說是這個測試的優等生,請看圖:http://echopic.com/wf0 右邊框起來的部份表示這是兩個不同的檔案分別是2.3跟2.4版本。 左邊框起來的則是它自動產生了兩個演出者的節點,表示它認得這是兩個人。 雖然WMP的管理概念跟它類似,但這款軟體自動產生節點的能力真的是強! foobar2000的Library也能做到,希望Songbird也很快有這個功能。 6. AIMP: v2.3,似乎也是不理會的樣子。 v2.4,可以直接加入,也可以播放,不過清單介面上只顯示梁靜茹, File Info裡面會顯示「梁靜茹 光良」,但是編輯ID3 v2介面裡面只看得到梁靜茹。 7. 千千靜聽: v2.3,這個也是沒有理會分隔。 v2.4,可以直接加入,也可以播放,不過清單介面上只顯示梁靜茹, 編輯ID3 v2介面裡面也只看得到梁靜茹。 結論: 大多數音樂管理軟體,都直接把2.3的分隔字元當作沒有這回事, 只有MediaMonkey跟Foobar2000實做出來(WMP這樣算不完整), 而2.4的NULL字元就更麻煩了,沒特別處理的話NULL後面的文字還會被鬼隱XDD 另外值得一提的是iTunes轉出的MP3預設似乎是用已廢棄的ID3 v2.2, (不知道新版有沒有改用2.3了,我很久沒把唱片轉MP3了) 然後還會在Comment欄位裡面寫入一堆資料庫資訊,內含NULL字元, 會造成不少軟體無法正常播放檔案,所以這次測試都有把Comment欄位整個清空。 如果你也有遇到少數檔案播放異常,記得檢查看看是不是iTunes的Comment作怪。 那麼就先到這裡打住,剩下的等吃完晚餐再寫一篇,謝謝你看完這麼長的廢話Orz -- ▄▄A WM Should Not Know Anger, ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ Nor Hatred,▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄Nor Love. ▄▄▄▄▄▄▄▄▄▄▄▄ My home: ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ http://kidwm.net/ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ 批踢踢兔個板:WM -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.1.178 WandererM:轉錄至看板 AudioPlayer 08/13 17:17
WandererM:foobar2000真不愧是王者!面面俱到Orz 08/13 17:20
※ 編輯: WandererM 來自: 220.133.1.178 (08/13 17:22)
tamato9519:(趕快推 不然人家就會知道我看不懂) o(><;)o 08/13 17:30
realmax:linux下不錯的播放軟體audacious可播放v2.4,中文不會亂碼, 08/13 18:15
realmax:但是還沒有寫入id3功能 08/13 18:16
realmax:foobar2000 似乎還不支援v2.4寫入喔 08/13 18:19
WandererM:可以,它是看原本的檔案寫入哪個版本就編輯哪個版本 08/13 18:38
WandererM:但是foobar2000新轉出來的MP3是還沒提供寫v2.4 08/13 18:39
WandererM:還有不要只是插花啊,Linux版也來寫一篇啊XD 08/13 18:57
Kenqr:推! 08/13 19:12