重装机兵2重制版id3在哪里

第三方登录:ID3v2&中文文档ver2.3.0[转]
1. ID3标签信息(版本2.3.0)
3. ID3v2概述
标签头(header)
扩展标签头(extended header)
帧头标识(frame header flags)
默认帧头标识(default flags)
4. ID3v2帧定义
文件唯一标识
文本信息帧
文本信息帧详细说明
用户自定义文本信息帧
超链接帧详细说明
用户自定义超链接帧
参与者列表
音乐CD标识
时间事件编码
4.7 MPEG位置查找表
拍子同步编码
非同步歌词
通用压缩对象
播放计数器
推荐缓存大小
音频文件加密
位置同步帧
加密方式注册
分组信息注册
非同步编码
音乐类型列表(ID3v1)
1. ID3标签信息
本文档是取代ID3v2.2.0标准的一个非正式版本。推出这个非正式版是为了让广大编程者可以在正式标准发布之前对本文中的一系列的标准有所认识。如果正式版与本文内容不一致,那正式版会用另外的版本号。本文的内容可能为会精简,但绝不会增加或改变标准定义。
本文描述了基于2.2.0版开发的2.3.0版的ID3v2非正式标准。ID3v2将音频文件的信息灵活地存入音频文件本身,这些信息包括一些专业技术信息,如均衡器设置,也包括一些标签信息,如标题,演唱者,版权等。
在本文例子中,在双引号("")内的文本表示一个文本字符串。以$开头的数字是十六进制的,以%开头的是二进制。$xx用来表示一个数值不定的字节(byte)。%x用来表示一位数值不定的比特(bit)。一个字节的最高有效位(MSB)是第7位,最低有效位(LSB)是第0位。
标签(tag)表示整个ID3标签信息。帧(frame)表示标签(tag)内的一段信息。标签(tag)是由标准头(header),帧(frame)和可选的补白数据(padding)组成的。域(field)指的是一段信息内的一小段数据,一个数值,或者一个字符串等。数字字符串表示一串只由0-9组成的字符串。
3. ID3v2概述
在设计ID3v2时有两大要点:一是要在不影响已有软件的基础上实现ID3v2,二是ID3v2的实现即要灵活,又要可扩展。
要点一:MPEG解码软件是通过检测内嵌在音频文件里面的同步信号(syncsignal)来播放音频文件的。所以ID3v2的标签不可以含有同步信号,这样软件才不会将ID3v2的信息当成音频来播放。如果真的在ID3v2的信息里面出现同步信号的话,请参照第五章《非同步编码》。
要点二:ID3v2是由一系列的信息块,所谓的帧(frame),构成的,而软件不需要知道这些信息块的格式。在每一个帧的开头,都有一个标记来标识这一帧(frame)的格式,内容和大小。软件可以根据帧的大小直接跳过而不用去处理它。
如果你需要得到ID3v2的完整版本号,在ID3v2的标签头(header)内就有版本号和整个ID3v2标签信息大小的数据。
本文件所描述的ID3标签主要是针对用MPEG-1/2 layer I, MPEG-1/2 layer II,
MPEG-1/2 layer III
和 MPEG-2.5编码的文件,当然其它类型编码的音频可能也会适用。
ID3v2的位顺序是最高有效位(MSB)先。字节顺序是最高有效字节先。(例如,如果要写入$,
则要写$12 34 45 78)
ID3v2规范允许你在所有帧数据的后面填充一些补白数据(padding)。你可以将ID3v2的大小定义得比你所有帧(frame)数据的总和要大,这样剩余的数据就要填充补白数据(padding)。这样做的好处是你可以预留一些空间放额外的帧(frame),否则当你想增加额外的帧(frame)时就要重新写过整个文件。补白数据用$00。
ID3标签信息结构图
3.1 ID3v2标签头(header)
ID3v2的标签头(header)应该是音频文件最开头的10个字节数据,如下表
ID3v2的标签头(header)总是以三个字节的"ID3"字符串开头,以此来标识这是ID3v2信息。紧跟着的两个字节表示ID3v2的版本号,版本号的第一个字节表示主版本号,第二个字节表示修订号。本文是ID3v2.3.0版。所有的修订号都是向后兼容的,但主版本号不是。如果软件只支持ID3v2.2.0或最低的版本,那么它应该直接跳过ID3v2.3.0或最高版本的标签信息。主版本号和修订号绝不会是$FF。
版本号后是一个字节的标签头标识(flags),其中只有三位是有意义的:
非同步编码(Unsynchronisation)
&&&&&&&&&&
标签头标识(flags)的第7位用来表示当前ID3v2信息是否经过非同步编码。当这位为1时,表示ID3v2信息经过非同步编码。
扩展标签头(Extended header)
&&&&&&&&&&
标签头标识(flags)的第6位用来表示标签头数据后面是否有扩展标签头数据。扩展标签头请参照第三章第二节。
测试指示位(Experimemtal indicator)
&&&&&&&&&&
标签头标识(flags)的第5位用来表示当前是否为测试版。如果有测试阶段,请将此位置1。
标签头标识(flags)的其它位统统要设为0。如果其中一位为1,那么程序可能不能正确识别该标签。
ID3v2的标签信息大小是用4个字节记录。但这四个字节的最高位都设为0。所以总共有28位来表示大小。所以如果ID3v2标签信息的长度为257个字节,那么大小就是
$00 00 02 01。
这里说的大小是ID3v2信息经过非同步编码,包括扩展标签头(extended header),补白数据(padding),但不包括标签头的大小,也就是整个ID3v2标签信息大小减去10。只用28位(256MB)是为了避免与MP3的同步信号冲突。
可以通过以下序列来检测ID3v2的标签信息的开始:
$49 44 33 yy yy xx zz zz zz zz
yy小于$FF, xx是标签头标识字节,zz小于$80。
3.2 ID3v2扩展标签头(extended header)
扩展标签头(extended header)包含了一些对正确解析ID3v2标签信息影响不大的信息,可以它是可选的。
扩展标签头大小,现在可以是6或10个字节,不包括它自己。补白大小就是整个ID3v2标签信息的大小减去标签头(header)和帧(frame)的大小,换言之就是补白的大小。扩展标签头与标签头是分离的,所以它也是要经过非同步编码的。
扩展标识是为了描述以后的标签属性,它的定义如下:
x - CRC验证
如果x位置1,那扩展标签头后就会有4个字节的CRC-32数据。CRC是根据扩展标签头与补白数据之间的数据计算出来的,也就是根据所有的帧计算出来的。
3.3 ID3v2帧
正如ID3v2标签信息是由标签头和一帧或多个帧组成的,所有的帧是由帧头,加上一段或多段帧信息组成的。帧头(frame header)的结构如下:&
帧ID是由大写英文字母A到Z,数字0到9组成的长度为4个字节的字符串。以"X","Y","Z"开头的表示是测试用途,所以所有人都可以自由使用,而无需将标签头标识中的测试指示位置1。但请记住别人可能与你使用相同的帧ID。而其它的帧ID则已被使用,或者保留作日后使用。
帧ID后是帧的大小,帧大小用4个字节使帧头的大小刚好是10个字节。而帧大小是用帧的总大小减去帧头大小计算出来的(帧的总大小-10)。
帧大小后是两个字节的帧标识。关于帧标识,请参照第三章第三节第一小节。
虽然我们希望帧是按对文件识别的重要性来排序,例如UFID,TIT2,MCDI,TRCK,但实际上帧在标签信息中的位置是不需要固定的。
ID3v2标签信息应该包含至少一个帧。而帧的大小,除去帧头外至少要有一个字节。
如果没有特别说明,字符串是使用ISO-8859-1字符集,范围从$20-$FF。在本文中,&text
string&表示使用ISO-8859-1字符集的字符串,如果字符串中有换行符,则用&full text
string&表示。所有的Unicode字符是用16位的Unicode 2.0(ISO/IEC
3,UCS-2)。Unicode字符串必须用Unicode BOM($FF FE
或者 $FE FF)标识其字节顺序。
全数字字符串和超链接总是用ISO-8859-1字符集编码。用ISO-8859-1字符编码时,结束字符用$00,而Unicode用$00 00表示。如没特别说明,换行符是禁止使用的。如果允许使用换行符,用ISO-8859-1字符编码时,换行用$0A表示。如果帧数据允许使用不同的字符集编码,那么在帧大小后面会跟一个字节的字符编码描述。如果是用ISO-8859-1,那这个字节为$00;如果用Unicode,就是$01。本文中,&text string according
to encoding&表示使用不同字符集编码的字符,如果字符内有换行符,则用&full text string
according to encoding&表示。空的Unicode字符串用可以用以下方式表示,($FF FE 00 00
或者 $FE FF 00 00),即以Unicode BOM开头($FF FE
或者 $FE FF),后面紧跟一个结束字符$00 00。
有三个字节是用来定义帧内容使用的是什么语言,定义是根据ISO-639-2。
所有超链接都是用相对路径,例如: "picture.png", "../doc.txt"
如果帧实际内容的比帧大小所定义还要大,例如你要增加一些本文所没有提到的信息,这会在以后更新的版本实现。版本的信息存放在标签头内。
在帧大小后面是两个字节的帧标识。所有未使用的标识位都要设为0。帧标识的第一个字节是状态信息,第二个字节是为了编码用的。如果在第一字节中未定义的标识位被置1,那么帧的内容是不可以修改的,除非那位标识位清零。如果在第二字节中有未定义的标识位被置1,那么帧的内容可能根本就不可读。帧标识的定义如下:
&#6 %ijk00000
标签改变保留位
如果当前帧是未定义或者不可读的,这位标识位告诉软件当在标签信息改变时,如何处理当前帧。标签信息改变包括添加补白数据,重新对帧排序等。
文件改变保留位
如果当前帧是未定义或者不可读的,这位标识位告诉软件当文件(不包括标签信息)改变时,如何处理当前帧。但如果音频文件是全部被替换的话,这种情况是例外的。
将这位置1则告诉软件本帧内容是只读的。改变本帧的内容可能会损坏文件,例如数字签名。如果你根本不知道为什么这一帧要设为只读,而你又要改变此帧内容,而且不想再做其它的修复操作,例如重新计算数字签名,这位标识位应该清零。
这位标识位表示当前帧是否经过压缩。
帧未经过压缩
帧用[#ZLIB zlib]压缩,在帧头的后面有4个字节的解压缩大小
这位标识位表示当前帧是否经过加密。如果这位置1,则在帧头后面会有一个字节的数据表示是用哪种方式加密的。详情见第四章第26节。
帧未经过加密
帧经过加密
该标识位表示当前帧是否隶属于其它帧下的分组。如果该位置1,则在帧头附加分组标识字节。具体相同分组标识的帧属于同一分组。
帧内不包含有分组标识信息
帧内包含有分组标识信息
某些标识位表示帧头会增加一些扩展信息。这些附加信息的顺序与对应标识位的顺序是一样的。例如4字节的解压缩大小信息会在加密方式之前(因为标识位i在标识位j之前)。这些附加的数据的大小不是算在帧头大小里面,而是算在帧大小里面,而且这些附加信息是不需要经过压缩或加密的。
3.4 默认的帧标识
本文内所有帧类型的帧标识设置可以分为以下几类。
(上表的意思是:对于AENC/ETCO/EQUA/...类型的帧,虽然标签信息改变了,这类型的帧还会保留下来,但如果文件改变了,这类型的帧会被丢弃。)
下面列出了本文中所定义的所有帧:
4.20&&& AENC&&& [#sec4.20 Audio encryption]
4.15&&& APIC&&& [#sec4.15 Attached picture]
4.11&&& COMM&&& [#sec4.11 Comments]
4.25&&& COMR&&& [#sec4.25 Commercial frame]
4.26&&& ENCR&&& [#sec4.26 Encryption method registration]
4.13&&& EQUA&&& [#sec4.13 Equalization]
4.6&&&& ETCO&&& [#sec4.6 Event timing codes]
4.16&&& GEOB&&& [#sec4.16 General encapsulated object]
4.27&&& GRID&&& [#sec4.27 Group identification registration]
4.4&&&& IPLS&&& [#sec4.4 Involved people list]
4.21&&& LINK&&& [#sec4.21 Linked information]
4.5&&&& MCDI&&& [#sec4.5 Music CD identifier]
4.7&&&& MLLT&&& [#sec4.7 MPEG location lookup table]
4.24&&& OWNE&&& [#sec4.24 Ownership frame]
4.28&&& PRIV&&& [#sec4.28 Private frame]
4.17&&& PCNT&&& [#sec4.17 Play counter]
4.18&&& POPM&&& [#sec4.18 Popularimeter]
4.22&&& POSS&&& [#sec4.22 Position synchronisation frame]
4.19&&& RBUF&&& [#sec4.19 Recommended buffer size]
4.12&&& RVAD&&& [#sec4.12 Relative volume adjustment]
4.14&&& RVRB&&& [#sec4.14 Reverb]
4.10&&& SYLT&&& [#sec4.10 Synchronized lyric/text]
4.8&&&& SYTC&&& [#sec4.8 Synchronized tempo codes]
4.2.1&& TALB&&& [#TALB Album/Movie/Show title]
4.2.1&& TBPM&&& [#TBPM BPM (beats per minute)]
4.2.1&& TCOM&&& [#TCOM Composer]
4.2.1&& TCON&&& [#TCON Content type]
4.2.1&& TCOP&&& [#TCOP Copyright message]
4.2.1&& TDAT&&& [#TDAT Date]
4.2.1&& TDLY&&& [#TDLY Playlist delay]
4.2.1&& TENC&&& [#TENC Encoded by]
4.2.1&& TEXT&&& [#TEXT Lyricist/Text writer]
4.2.1&& TFLT&&& [#TFLT File type]
4.2.1&& TIME&&& [#TIME Time]
4.2.1&& TIT1&&& [#TIT1 Content group description]
4.2.1&& TIT2&&& [#TIT2 Title/songname/content description]
4.2.1&& TIT3&&& [#TIT3 Subtitle/Description refinement]
4.2.1&& TKEY&&& [#TKEY Initial key]
4.2.1&& TLAN&&& [#TLAN Language(s)]
4.2.1&& TLEN&&& [#TLEN Length]
4.2.1&& TMED&&& [#TMED Media type]
4.2.1&& TOAL&&& [#TOAL Original album/movie/show title]
4.2.1&& TOFN&&& [#TOFN Original filename]
4.2.1&& TOLY&&& [#TOLY Original lyricist(s)/text writer(s)]
4.2.1&& TOPE&&& [#TOPE Original artist(s)/performer(s)]
4.2.1&& TORY&&& [#TORY Original release year]
4.2.1&& TOWN&&& [#TOWN File owner/licensee]
4.2.1&& TPE1&&& [#TPE1 Lead performer(s)/Soloist(s)]
4.2.1&& TPE2&&& [#TPE2 Band/orchestra/accompaniment]
4.2.1&& TPE3&&& [#TPE3 Conductor/performer refinement]
4.2.1&& TPE4&&& [#TPE4 Interpreted, remixed, or otherwise modified by]
4.2.1&& TPOS&&& [#TPOS Part of a set]
4.2.1&& TPUB&&& [#TPUB Publisher]
4.2.1&& TRCK&&& [#TRCK Track number/Position in set]
4.2.1&& TRDA&&& [#TRDA Recording dates]
4.2.1&& TRSN&&& [#TRSN Internet radio station name]
4.2.1&& TRSO&&& [#TRSO Internet radio station owner]
4.2.1&& TSIZ&&& [#TSIZ Size]
4.2.1&& TSRC&&& [#TSRC ISRC (international standard recording code)]
4.2.1&& TSSE&&& [#TSEE Software/Hardware and settings used for encoding]
4.2.1&& TYER&&& [#TYER Year]
4.2.2&& TXXX&&& [#TXXX User defined text information frame]
4.1&&&& UFID&&& [#sec4.1 Unique file identifier]
4.23&&& USER&&& [#sec4.23 Terms of use]
4.9&&&& USLT&&& [#sec4.9 Unsychronized lyric/text transcription]
4.3.1&& WCOM&&& [#WCOM Commercial information]
4.3.1&& WCOP&&& [#WCOP Copyright/Legal information]
4.3.1&& WOAF&&& [#WOAF Official audio file webpage]
4.3.1&& WOAR&&& [#WOAR Official artist/performer webpage]
4.3.1&& WOAS&&& [#WOAS Official audio source webpage]
4.3.1&& WORS&&& [#WORS Official internet radio station homepage]
4.3.1&& WPAY&&& [#WPAY Payment]
4.3.1&& WPUB&&& [#WPUB Publishers official webpage]
4.3.2&& WXXX&&& [#WXXX User defined URL link frame]
4.1 &文件唯一标识帧&(UFID)
帧的目的是让拥有更多相关信息的数据库可以根据此帧识别出某个音频文件。但这类型的数据库标准不在本文的讨论范围之内,超链接帧或连接帧,里面可能包含负
责维护该类型数据库组织的电子邮箱信息。如有任何问题,请发信到他们的电邮询问。超链接帧里面的超链接不可以直接访问数据库。以下字符串是用作测试的:ID3v2UFID
文本信息帧
文本信息帧是最重要的帧,它包含了演唱者,专辑名等的信息。不同类型的文本信息帧在ID3v2标签信息中可能只有一个。如果文本信息帧的帧内容中,有一个字符串后面紧跟一个结束字符($00或$00 00),那么它后面的信息应该忽略掉并不把它打印出来。所有文本信息帧的帧ID都是以"T"开头的,除了"TXXX"帧以外。文本信息帧的格式如下:
"T000" - "TZZZ" ,
除了"TXXX"
:&text string according to
文本信息帧详解
歌名副标题
原艺术家/演唱者
原发行年份
文件的所有者
乐队/管弦乐队/伴奏
翻唱/混音/改编
网络电台名
网络电台所有者
国际灌录编码标准
非同步编码
非同步编码的目的是让ID3v2标签信息尽量与现有软件兼容。如果用的是支持ID3v2的最新软件,那么非同步编码就没有意义了。非同步编码只针对MPEG 2 layer
I,II,III和MPEG 2.5文件。
如果在ID3v2标签信息内有一段数据刚好与MP3文件格式的同步信号相同,(我们将这段数据称为“伪同步信号”),那么就在伪同步信号的第一个字节后插入一个字节的全0数据。在ID3v2内的伪同步信号经过非同步编码后如下:
非同步编码前:xxxxx
非同步编码后:xxxxx
非同步编码的副作用是使所有$FF 00都会变为$FF 00 00,
这样音频解码软件就不会被ID3v2内的伪同步信号影响。
如果ID3v2标签信息经过非同步编码,请将ID3v2标签头标识的最高位置1。只有当ID3v2标签信息内含有伪同步信号才将此位置1,否则请设为0
请紧记:如果ID3v2标签信息内容是经过压缩的,非同步编码应该是在压缩之后再进行的。解压时就要先进行非同步解码,再解压缩。
如果ID3v2标签信息的最后一个字节是$FF,为了消除伪同步信号,至少要添加一个字节的补白数据。
(注:MP3的同步信号是13位的全1数据,即xxxxx)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。ID3Mod2 Mac版 V3.2}

我要回帖

更多关于 重装机兵戈麦斯在哪里 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信