ID3v1.1, ID3v2.2, ID3v2.3 and ID3v2.4 tags区别
D3v1 & ID3v1.1
MP3格式标准里并没有特别定义储存曲目相关讯息的结构,于是1996年有人提出了一种解决办法,即在mp3档案末尾新增一些额外的数据(128 byte)来储存曲名、演唱者、专辑名等讯息,这就是ID3(v1)。
ID3v1的字列(field)名称和每个字列的大小都是类BIOS的,如下所显示
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有明显缺陷。字列名和字列长度都是类BIOS死的,不可增强,缺乏灵活性。而且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设定讯息,甚至可以插入图片,支持连接外部讯息和网页……还有很多,有兴趣的可以看这里([url]http://www.id3.org/frames.html[/url])。
看上去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几乎是你的唯一选项。
目前tag格式没有一个统一标准,不同音濒格式使用的tag也不尽相同。现在比较流行的tag格式有ID3和APE(这个APE和平常说的无损音濒格式APE可不一样),它们各自也还有不同的版本,下面分别做简要介绍。
●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系统。