




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ID3v2 中文文档ver2.3.01. ID3标签信息(版本2.3.0)1.1 文档说明1.2 摘要2. 约定3. ID3v2概述3.1 ID3v2 标签头(header)3.2 ID3v2 扩展标签头(extended header)3.3 ID3v2 帧(frame)3.3.1 帧头标识(frame header flags)3.3.2 默认帧头标识(default flags)4. ID3v2帧定义4.1 文件唯一标识4.2 文本信息帧4.2.1 文本信息帧详细说明4.2.2 用户自定义文本信息帧4.3 超链接帧4.3.1 超链接帧详细说明4.3.2 用户自定义超链接帧4.4 参与者列表4.5 音乐CD标识4.6 时间事件编码4.7 MPEG位置查找表4.8 拍子同步编码4.9 非同步歌词4.10 同步歌词4.11 备注4.12 音量调节4.13 均衡器4.14 混音器4.15 附加图片4.16 通用压缩对象4.17 播放计数器4.18 欢迎程度4.19 推荐缓存大小4.20 音频文件加密4.21 连接信息4.22 位置同步帧4.23 使用条款4.24 所有权4.25 广告4.26 加密方式注册4.27 分组信息注册4.28 个人信息5. 非同步编码6. 版权信息7. 参考文档8. 附录8.1 附录A- 音乐类型列表(ID3v1)9. 联系方式1. ID3标签信息1.1 文档说明本文档是取代ID3v2.2.0标准的一个非正式版本。推出这个非正式版是为了让广大编程者可以在正式标准发布之前对本文中的一系列的标准有所认识。如果正式版与本文内容不一致,那正式版会用另外的版本号。本文的内容可能为会精简,但绝不会增加或改变标准定义。1.2 摘要本文描述了基于2.2.0版开发的2.3.0版的ID3v2非正式标准。ID3v2将音频文件的信息灵活地存入音频文件本身,这些信息包括一些专业技术信息,如均衡器设置,也包括一些标签信息,如标题,演唱者,版权等。2. 约定在本文例子中,在双引号()内的文本表示一个文本字符串。以$开头的数字是十六进制的,以%开头的是二进制。$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)先。字节顺序是最高有效字节先。(例如,如果要写入$12345678, 则要写$12 34 45 78)ID3v2规范允许你在所有帧数据的后面填充一些补白数据(padding)。你可以将ID3v2的大小定义得比你所有帧(frame)数据的总和要大,这样剩余的数据就要填充补白数据(padding)。这样做的好处是你可以预留一些空间放额外的帧(frame),否则当你想增加额外的帧(frame)时就要重新写过整个文件。补白数据用$00。BlocksFieldsBytesContentHeaderID3v2 Identifier3ID3ID3v2 Version2$03 00ID3v2 Flags1%abc00000ID3v2 Size4%0xxxxxxxExtended HeaderExtended Header Size4$xx xx xx xxExtended Flags2$xx xxSize of padding4$xx xx xx xxFrameFrame ID4AENC/APIC/COMM/.Frame Size4$xx xx xx xxFlags2%abc00000 %ijk00000DATAFrame Size$xx .FrameFrame ID4AENC/APIC/COMM/.Frame Size4$xx xx xx xxFlags2%abc00000 %ijk00000DATAFrame Size$xx .Padding$00 .ID3标签信息结构图3.1 ID3v2标签头(header)ID3v2的标签头(header)应该是音频文件最开头的10个字节数据,如下表ID3v2/file identifierID3ID3v2 version$03 00ID3v2 flags%abc00000ID3v2 size4 * %0xxxxxxxID3v2的标签头(header)总是以三个字节的ID3字符串开头,以此来标识这是ID3v2信息。紧跟着的两个字节表示ID3v2的版本号,版本号的第一个字节表示主版本号,第二个字节表示修订号。本文是ID3v2.3.0版。所有的修订号都是向后兼容的,但主版本号不是。如果软件只支持ID3v2.2.0或最低的版本,那么它应该直接跳过ID3v2.3.0或最高版本的标签信息。主版本号和修订号绝不会是$FF。版本号后是一个字节的标签头标识(flags),其中只有三位是有意义的:a - 非同步编码(Unsynchronisation)标签头标识(flags)的第7位用来表示当前ID3v2信息是否经过非同步编码。当这位为1时,表示ID3v2信息经过非同步编码。b - 扩展标签头(Extended header)标签头标识(flags)的第6位用来表示标签头数据后面是否有扩展标签头数据。扩展标签头请参照第三章第二节。c - 测试指示位(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 zzyy小于$FF, xx是标签头标识字节,zz小于$80。3.2 ID3v2扩展标签头(extended header)扩展标签头(extended header)包含了一些对正确解析ID3v2标签信息影响不大的信息,可以它是可选的。扩展标签头大小(Extended header size)$xx xx xx xx扩展标识(Extended Flags)$xx xx补白大小(Size of padding)$xx xx xx xx扩展标签头大小,现在可以是6或10个字节,不包括它自己。补白大小就是整个ID3v2标签信息的大小减去标签头(header)和帧(frame)的大小,换言之就是补白的大小。扩展标签头与标签头是分离的,所以它也是要经过非同步编码的。扩展标识是为了描述以后的标签属性,它的定义如下:%x0000000 00000000x - CRC验证如果x位置1,那扩展标签头后就会有4个字节的CRC-32数据。CRC是根据扩展标签头与补白数据之间的数据计算出来的,也就是根据所有的帧计算出来的。3.3 ID3v2帧正如ID3v2标签信息是由标签头和一帧或多个帧组成的,所有的帧是由帧头,加上一段或多段帧信息组成的。帧头(frame header)的结构如下:帧ID (frame ID)$xx xx xx xx (4个字符)帧大小(Size)$xx xx xx xx帧标识(Flags)$xx xx帧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。在本文中,表示使用ISO-8859-1字符集的字符串,如果字符串中有换行符,则用表示。所有的Unicode字符是用16位的Unicode 2.0(ISO/IEC 10646-1:1993,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。本文中,表示使用不同字符集编码的字符,如果字符内有换行符,则用表示。空的Unicode字符串用可以用以下方式表示,($FF FE 00 00 或者 $FE FF 00 00),即以Unicode BOM开头($FF FE 或者 $FE FF),后面紧跟一个结束字符$00 00。有三个字节是用来定义帧内容使用的是什么语言,定义是根据ISO-639-2。所有超链接都是用相对路径,例如: picture.png, ./doc.txt如果帧实际内容的比帧大小所定义还要大,例如你要增加一些本文所没有提到的信息,这会在以后更新的版本实现。版本的信息存放在标签头内。3.3.1 帧标识在帧大小后面是两个字节的帧标识。所有未使用的标识位都要设为0。帧标识的第一个字节是状态信息,第二个字节是为了编码用的。如果在第一字节中未定义的标识位被置1,那么帧的内容是不可以修改的,除非那位标识位清零。如果在第二字节中有未定义的标识位被置1,那么帧的内容可能根本就不可读。帧标识的定义如下:%abc00000 %ijk00000a - 标签改变保留位如果当前帧是未定义或者不可读的,这位标识位告诉软件当在标签信息改变时,如何处理当前帧。标签信息改变包括添加补白数据,重新对帧排序等。0帧被保留1 帧被丢弃b - 文件改变保留位如果当前帧是未定义或者不可读的,这位标识位告诉软件当文件(不包括标签信息)改变时,如何处理当前帧。但如果音频文件是全部被替换的话,这种情况是例外的。0帧被保留1帧被丢弃c - 只读将这位置1则告诉软件本帧内容是只读的。改变本帧的内容可能会损坏文件,例如数字签名。如果你根本不知道为什么这一帧要设为只读,而你又要改变此帧内容,而且不想再做其它的修复操作,例如重新计算数字签名,这位标识位应该清零。i - 压缩这位标识位表示当前帧是否经过压缩。0 帧未经过压缩1帧用#ZLIB zlib压缩,在帧头的后面有4个字节的解压缩大小j - 加密这位标识位表示当前帧是否经过加密。如果这位置1,则在帧头后面会有一个字节的数据表示是用哪种方式加密的。详情见第四章第26节。0帧未经过加密1帧经过加密k - 分组标识该标识位表示当前帧是否隶属于其它帧下的分组。如果该位置1,则在帧头附加分组标识字节。具体相同分组标识的帧属于同一分组。0帧内不包含有分组标识信息1帧内包含有分组标识信息某些标识位表示帧头会增加一些扩展信息。这些附加信息的顺序与对应标识位的顺序是一样的。例如4字节的解压缩大小信息会在加密方式之前(因为标识位i在标识位j之前)。这些附加的数据的大小不是算在帧头大小里面,而是算在帧大小里面,而且这些附加信息是不需要经过压缩或加密的。3.4默认的帧标识本文内所有帧类型的帧标识设置可以分为以下几类。标签信息改变文件改变帧类型丢弃丢弃无丢弃保留无保留丢弃AENC, ETCO, EQUA, MLLT, POSS, SYLT, SYTC, RVAD, TENC, TLEN, TSIZ保留保留其它帧类型(上表的意思是:对于AENC/ETCO/EQUA/.类型的帧,虽然标签信息改变了,这类型的帧还会保留下来,但如果文件改变了,这类型的帧会被丢弃。)4 ID3v2帧下面列出了本文中所定义的所有帧:4.20 AENC #sec4.20 Audio encryption 4.15 APIC #sec4.15 Attached picture4.11 COMM #sec4.11 Comments4.25 COMR #sec4.25 Commercial frame4.26 ENCR #sec4.26 Encryption method registration4.13 EQUA #sec4.13 Equalization4.6 ETCO #sec4.6 Event timing codes4.16 GEOB #sec4.16 General encapsulated object4.27 GRID #sec4.27 Group identification registration4.4 IPLS #sec4.4 Involved people list4.21 LINK #sec4.21 Linked information4.5 MCDI #sec4.5 Music CD identifier4.7 MLLT #sec4.7 MPEG location lookup table4.24 OWNE #sec4.24 Ownership frame4.28 PRIV #sec4.28 Private frame4.17 PCNT #sec4.17 Play counter4.18 POPM #sec4.18 Popularimeter4.22 POSS #sec4.22 Position synchronisation frame4.19 RBUF #sec4.19 Recommended buffer size4.12 RVAD #sec4.12 Relative volume adjustment4.14 RVRB #sec4.14 Reverb4.10 SYLT #sec4.10 Synchronized lyric/text4.8 SYTC #sec4.8 Synchronized tempo codes4.2.1 TALB #TALB Album/Movie/Show title4.2.1 TBPM #TBPM BPM (beats per minute)4.2.1 TCOM #TCOM Composer4.2.1 TCON #TCON Content type4.2.1 TCOP #TCOP Copyright message4.2.1 TDAT #TDAT Date4.2.1 TDLY #TDLY Playlist delay4.2.1 TENC #TENC Encoded by4.2.1 TEXT #TEXT Lyricist/Text writer4.2.1 TFLT #TFLT File type4.2.1 TIME #TIME Time4.2.1 TIT1 #TIT1 Content group description4.2.1 TIT2 #TIT2 Title/songname/content description4.2.1 TIT3 #TIT3 Subtitle/Description refinement4.2.1 TKEY #TKEY Initial key4.2.1 TLAN #TLAN Language(s)4.2.1 TLEN #TLEN Length4.2.1 TMED #TMED Media type4.2.1 TOAL #TOAL Original album/movie/show title4.2.1 TOFN #TOFN Original filename4.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 year4.2.1 TOWN #TOWN File owner/licensee4.2.1 TPE1 #TPE1 Lead performer(s)/Soloist(s)4.2.1 TPE2 #TPE2 Band/orchestra/accompaniment4.2.1 TPE3 #TPE3 Conductor/performer refinement4.2.1 TPE4 #TPE4 Interpreted, remixed, or otherwise modified by4.2.1 TPOS #TPOS Part of a set4.2.1 TPUB #TPUB Publisher4.2.1 TRCK #TRCK Track number/Position in set4.2.1 TRDA #TRDA Recording dates4.2.1 TRSN #TRSN Internet radio station name4.2.1 TRSO #TRSO Internet radio station owner4.2.1 TSIZ #TSIZ Size4.2.1 TSRC #TSRC ISRC (international standard recording code)4.2.1 TSSE #TSEE Software/Hardware and settings used for encoding4.2.1 TYER #TYER Year4.2.2 TXXX #TXXX User defined text information frame4.1 UFID #sec4.1 Unique file identifier4.23 USER #sec4.23 Terms of use4.9 USLT #sec4.9 Unsychronized lyric/text transcription4.3.1 WCOM #WCOM Commercial information4.3.1 WCOP #WCOP Copyright/Legal information4.3.1 WOAF #WOAF Official audio file webpage4.3.1 WOAR #WOAR Official artist/performer webpage4.3.1 WOAS #WOAS Official audio source webpage4.3.1 WORS #WORS Official internet radio station homepage4.3.1 WPAY #WPAY Payment4.3.1 WPUB #WPUB Publishers official webpage4.3.2 WXXX #WXXX User defined URL link frame4.1 (UFID)该帧的目的是让拥有更多相关信息的数据库可以根据此帧识别出某个音频文件。但这类型的数据库标准不在本文的讨论范围之内,超链接帧或连接帧,里面可能包含负责维护该类型数据库组织的电子邮箱信息。如有任何问题,请发信到他们的电邮询问。超链接帧里面的超链接不可以直接访问数据库。以下字符串是用作测试的:/dummy/ufid.html。如果不是特别说明,软件可以将此帧删除。“所有者标识符”一定不可以为空。“所有者标识符”后面就是最长可达64字节的文件的真正唯一的标识符。在ID3v2标签信息内可以有不只一个(UFID),但每一个的“所有者标识符”都要是唯一的。 帧ID : UFID “所有者标识符” : $00标识 : 64字节数据4.2 文本信息帧文本信息帧是最重要的帧,它包含了演唱者,专辑名等的信息。不同类型的文本信息帧在ID3v2标签信息中可能只有一个。如果文本信息帧的帧内容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚礼策划与婚礼现场婚礼车队租赁合同
- 第12课 新时期的理论成果说课稿-2025-2026学年高中历史北师大版2010必修3-北师大版2010
- 安全举报培训心得课件
- 民政局离婚案件办理及后续法律跟踪服务合同
- 加拿大团聚担保合同范本
- 住房公积金按揭贷款支持新能源产业发展协议
- 名校教授特聘合同书-学术研究与教学服务
- 农业抵押贷款合同范本协议书
- 个性化离婚协议范本兼顾双方利益与子女成长
- 2025建筑材料供应承包合同
- 《计算机应用基础项目教程》(赵国龙)764-1资源包-课件-项目一-计算机基础知识
- 堤溪沱江大桥特别重大坍塌事故工程伦理案例分析
- 【尿素生产中的热量衡算2400字】
- DL∕T 1684-2017 油浸式变压器(电抗器)状态检修导则
- 译林版初中单词表
- 新概念英语第二册第34课随堂练习
- 广东省广州市越秀区2025届高三数学上学期10月阶段测试试题
- NB-T10324-2019光伏发电站高电压穿越检测技术规程
- 广州初中7-9单词表
- 患者登记与管理制度
- 按期支付进度款的催告函(过程进度款到期前提示支付)(联系单)
评论
0/150
提交评论