MP3文件格式说明.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MP3文件格式说明

用一个二进制查看器(比如Ultra-Edit)打开一个MP3文件,就能看到一大堆看似杂乱无序的数据。但只要用心了解就会知道,其实,这一切都是有规律可循的。 MP3文件是由帧(frame)构成,帧是MP3文件的最小组成单位。每帧都包含帧头,并可以计算帧的长度。根据帧的性质不同,文件主要分为三个部分,ID3v2标签帧,数据帧和ID3v1标签帧。并非每个MP3文件都有ID3v2,但是数据帧和ID3v1帧是必须的。ID3v2在文件头,以字符串“ID3”为标志,包含了演唱者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。ID3v1在文件结尾,以字符串“TAG”为标记,其长度是固定的128个字节,包含了演唱者、歌名、专辑、年份等信息。 I. ID3V2 ID3V2到现在一共有四个版本,但流行的播放软件一般只支持第三版,既ID3V2.3。每个ID3V2.3?的标签都一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。标签头和标签帧一起顺序存放在MP3?文件的首部。 标签头 长度为10个字节,位于文件首部,其数据结构如下: char Header[3]; /*?字符串?ID3 */ char Ver;???????/*?版本号ID3V2.3?就记录3 */ char Revision; /*?副版本号此版本记录为0 */ char Flag;????/*?存放标志的字节,这个版本只定义了三位,很少用到,可以忽略?*/ char Size[4]; /*?标签大小,除了标签头的10?个字节的标签帧的大小?*/ 标签大小为四个字节,但每个字节只用低7位,最高位不使用,恒为0,其格式如下: 0xxxxxxx 0xxxxxxx 0xxxxxxx 0xxxxxxx 计算公式如下: ID3V2_frame_size = (int)(Size[0] 0x7F) 21 ????????????????| (int)(Size[1] 0x7F) 14 ?????????????????| (int)(Size[2] 0x7F) 7 ?????????????????| (int)(Size[3] 0x7F) + 10; 标签帧 每个标签帧都有一个10字节的帧头和至少一个字节的不固定长度的内容组成。它们是顺序存放在文件中,由各自特定的标签头来标记帧的开始。其帧的结构如下: char FrameID[4];???/*用四个字符标识一个帧,说明其内容?*/ char Size[4];??????/*?帧内容的大小,不包括帧头,不得小于1 */ char Flags[2];?????/*?存放标志,只定义了6?位,此处不再说明?*/ 常用帧标识: TIT2:标题 TPE1:作者 TALB:专辑 TRCK: 音轨,格式:N/M,N表示专辑中第几首,M为专辑中歌曲总数 TYER:年份 TCON:类型 COMM:备注,格式:“eng\0备注内容”,其中eng表示所使用的语言 帧大小为四个字节所表示的整数大小。 II. ID3V1 其数据结构如下: char Header[3];????/*?标签头必须是TAG否则认为没有标签?*/ char Title[30];????/*?标题?*/ char Artist[30];???/*?作者?*/ char Album[30];????/*?专集?*/ char Year[4];??????/*?出品年代?*/ char Comment[28]; /*?备注?*/ char reserve;??????/*?保留?*/ char track;;???????/*?音轨?*/ char Genre;????????/*?类型?*/ 其实,关于最后31个字节还存在另外一个版本,就是30个字节的Comment和一个字节的Genre. 有了上述的这些信息,我们就可以自己写代码,从MP3文件中抓取信息以及修改文件名了。但是,如果真的想写一个播放软件,还是需要读它的数据帧,并进行解码。 III.?数据帧 数据帧往往有多个,至于有多少,由文件大小和帧大小来决定。每个帧都有一个四字节长的帧头,接下来可能有两个字节的CRC校验,其存在由帧头中的具体信息决定。接着就是帧的实体数据,也就是MAIN_DATA了。 A,帧头结构如下: 位置?????长度?????描述 (BIT)??(BITS) ———————————————————————————— 31-19???12???????Frame sync(0xFFF) 18/17????2????????Layer, 00 – reserved, 01 – Lay

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档