ID3,一般是位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息就被称为ID3信息,ID3信息分为两个版本,v1和v2版。 其中:v1版的ID3在mp3文件的末尾128字节,以TAG三个字符开头,后面跟上歌曲信息。 v2版一般位于mp3的开头,可以存储歌词,该专辑的图片等大容量的信息。
V1版:文件后面的128个字节
struct music{ char Header[3]; /*标签头必须是"TAG"否则认为没有标签*/ char Title[30]; /*标题*/ char Artist[30]; /*作者*/ char Album[30]; /*专集*/ char Year[4]; /*出品年代*/ char Comment[30]; /*备注*/ char Genre; /*类型*/};
V2版:包括开头的10个标签头字节和后面的标签帧(帧头和具体内容),信息是一帧一帧存储的。
struct tagHeader{//标签头 char Header[3];//必须为ID3,否则认为标签不存在 char Ver;//版本号;ID3V2.3就记录03,ID3V2.4就记录04 char Revision;//副版本号;此版本记录为00 char Flag;//存放标志的字节 char Size[4];//标签大小,包括标签帧和扩展标签头,不包括标签头的10个字节};
struct tagFrame{//帧头 char FrameID[4];//用四个字符标识一个帧,说明其内容,稍后有常用的标识对照表 char Size[4];//帧内容的大小,不包括帧头,不得小于1,为具体内容的大小。 char Flags[2];//存放标志,只定义了6位};
常用的对照如下:
TIT2=标题 表示内容为这首歌的标题,下同
TPE1=作者
TALB=专集
TRCK=音轨 格式:N/M 其中N为专集中的第N首,M为专集中共M首,N和M为ASCII码表示的数字
TYER=年代 是用ASCII码表示的数字
TCON=类型 直接用字符串表示
COMM=备注 格式:"eng/0备注内容",其中eng表示备注所使用的自然语言 注意:帧头后面一般有一个字节为0,所以要跳过这个字节取得具体的内容。