MP3 Tag 心得

前两天用千千把陈绮贞的Immortal加好了tag和封面图拷到小7里面,发现天天动听可以正常显示所有信息,但是内置player刷新后均显示未知,比较郁闷。想起天天的论坛里有文章说千千编辑的tag有时不能在内置player中显示,想想很没道理,千千的tag编辑功能应该算是很强大的,猜想大概是因为tag格式的问题。所以Google了一下,觉得收获不少。


先引用一些东西,首先是国外某个player的论坛上有人提了这样一个问题[1]:

I opened the problematic files in TagScanner and noticed that all the files that had problems displaying in windows and WMP were of the following format: ID3v2.3@UTF8, while the songs which were displaying fine (not ones updated by MusicBrainz) were ID3v2.3@UTF16.

After some searching online it appears that Windows Media Player does not support the UTF-8 Unicode encoding in ID3v2 tags, but does support UTF-16. Also I think it doesn’t support ID3v2.4 at all (which is always UTF-8 I think, yes?). I’m assuming the same lack of support is present with windows explorer in WinXP?

大致的意思是,WMP在某些音乐的tag上显示乱码,但是这些乱码的tag都有一个特点就是ID3v2.3格式的UTF-8编码的,而ID3v2.3的UTF-16编码的tag都能正常显示,并且认为WMP和WinXP的属性栏中不支持ID3v2.3(UTF-8)和ID3v2.4。这估计就是乱码的起源。

然后搜了一些ID3和APE格式的资料,太长了,给出一些地址[2][3][4],这些文章大致介绍了一下ID3标签(包括v1和v2)和APE标签的历史和代码结构,我总结了大致有这么几点:

1. ID3标签是播放器市场的产物,并不是MP3原始标准中的;
2. ID3v1(包括ID3v1.1)是一个旧的标准,由于只支持30字符常常出现末尾截断,已快被市场淘汰;
3. ID3v2解决了长度问题,并允许用户自定义字段,在便携式设备(MP3,手机)中应用广泛,但是其编码复杂受到很多业内人士的鄙视;
4. ID3v1只采用ISO-8859-1编码,不支持中文显示(虽然可以储存中文),而ID3v2支持unicode编码,可以很好的支持中文。但是这种编码的支持程度并不好,WMP和Winamp只能支持到ID3v2.3的UTF-16,对ID3v2.4的UTF-8不支持,因此读取到这种编码时会显示乱码。
5. APEv1和v2是一种新的tag格式,是APE音乐格式的衍生标准,这种格式的编码灵活,是一种优秀的tag格式,目前千千、Foobar都能很好的支持这种格式,但是其它大多数软件和便携设备都不能支持它。

说到这里其实已经发现了问题的根本所在:在千千静听的默认设置下,MP3 tag的写入类型是ID3v1 & APEv2,也就是说我拷入小7的歌曲其ID3v2是空的,而APEv2是有的,天天动听支持APEv2所以显示的很好,而内置player由于只支持ID3v2所以显示未知。而在WMP中编辑的标签,由于是直接编辑的ID3v2所以在大多数地方都能显示正常。

而在如上的推断中,如果从网上下载的MP3歌曲本来带有混乱的ID3v2,即使在千千中编辑好了tag,在某些MP3播放器中仍然可能显示乱码(这也正是以前困扰过我的地方),即使千千的显示完全正常,因为千千默认是按照APEv2 >> ID3v2 >> ID3v1的顺序读取tag的。

由此也得出了解决该问题的办法:对千千播放列表的歌曲右键文件属性,下端的选项,写入类型调整为ID3v2 & APEv2,ID3v2建议采用UTF-16编码。调整后,小7读取完全正常。

P.S: 后来发现千千对添加封面图的支持不是很好,我使用了MP3tag软件进行了编辑,效果非常好,所有的tag都能很好的规范化了。

[1] ID3v2.3 UTF-8 issue. MusicBrainz Forums. http://forums.musicbrainz.org/viewtopic.php?id=1311
[2] ID3 History. ID3.org. http://www.id3.org/History
[3] ID3&APE两种常见tag格式简介. 第三天空. http://hi.baidu.com/d3sky/blog/item/62d2ab18d372ef0534fa4135.html
[4] WMP11不支持包含UTF-8编码ID3v2的MP3文件. Wut I am. http://wutiam.net/2008/11/wmp11-does-not-support-mp3-with-id3v2-in-utf8/

鱼尾Swing

国内某理工学校电子类专业85后。热爱PS,热爱WEB,对各种技术都好奇。平时看看动画,听听音乐,做爱做的事。作为工坊的工头,负责工坊的维护,操劳各种苦力工作。

More Posts - Website

Follow Me:
Twitter

Leave a Reply