关于ID3 我录制了一些APE格式的歌曲,现在想知道这种格式的ID3是怎样定义的?请各位帮忙告诉我,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ID3文件格式前言 2001年11月的一天,我决定整理一下我的硬盘中乱七八糟的MP3,但使用Winamp+Expleror效率太慢,到网上找了一下只有一个叫MP3/Tag Studio v2.6的工具还不错,可惜是阴文的不说,还只能用30天,而且要插广告。我呸,这么麻烦。一气之下,决定自己写一个从此在网上查阅资料,写下了这辈子的第一个自由软件和这篇文章。大家可以在http://www.csdn.net/cnshare/soft/10/10119.shtm看到这个软件的详细说明和下载链接。 ID3v1 ID3V1比较简单,它是存放在MP3文件的末尾,用16进制的编辑器打开一个MP3文件,查看其末尾的128个顺序存放字节,数据结构定义如下: char Header[3]; /*标签头必须是"TAG"否则认为没有标签*/ char Title[30]; /*标题*/ char Artist[30]; /*作者*/ char Album[30]; /*专集*/ char Year[4]; /*出品年代*/ char Comment[30]; /*备注*/ char Genre; /*类型*/ ID3V1的各项信息都是顺序存放,没有任何标识将其分开,比如标题信息不足30个字节,则使用'\0'补足,否则将造成信息错误。Genre使用原码表示,对照表如下: /* Standard genres */ 0="Blues"; 1="ClassicRock"; 2="Country"; 3="Dance"; 4="Disco"; 5="Funk"; 6="Grunge"; 7="Hip-Hop"; 8="Jazz"; 9="Metal"; 10="NewAge"; 11="Oldies"; 12="Other"; 13="Pop"; 14="R&B"; 15="Rap"; 16="Reggae"; 17="Rock"; 18="Techno"; 19="Industrial"; 20="Alternative"; 21="Ska"; 22="DeathMetal"; 23="Pranks"; 24="Soundtrack"; 25="Euro-Techno"; 26="Ambient"; 27="Trip-Hop"; 28="Vocal"; 29="Jazz+Funk"; 30="Fusion"; 31="Trance"; 32="Classical"; 33="Instrumental"; 34="Acid"; 35="House"; 36="Game"; 37="SoundClip"; 38="Gospel"; 39="Noise"; 40="AlternRock"; 41="Bass"; 42="Soul"; 43="Punk"; 44="Space"; 45="Meditative"; 46="InstrumentalPop"; 47="InstrumentalRock"; 48="Ethnic"; 49="Gothic"; 50="Darkwave"; 51="Techno-Industrial"; 52="Electronic"; 53="Pop-Folk"; 54="Eurodance"; 55="Dream"; 56="SouthernRock"; 57="Comedy"; 58="Cult"; 59="Gangsta"; 60="Top40"; 61="ChristianRap"; 62="Pop/Funk"; 63="Jungle"; 64="NativeAmerican"; 65="Cabaret"; 66="NewWave"; 67="Psychadelic"; 68="Rave"; 69="Showtunes"; 70="Trailer"; 71="Lo-Fi"; 72="Tribal"; 73="AcidPunk"; 74="AcidJazz"; 75="Polka"; 76="Retro"; 77="Musical"; 78="Rock&Roll"; 79="HardRock"; /* Extended genres */ 80="Folk"; 81="Folk-Rock"; 82="NationalFolk"; 83="Swing"; 84="FastFusion"; 85="Bebob"; 86="Latin"; 87="Revival"; 88="Celtic"; 89="Bluegrass"; 90="Avantgarde"; 91="GothicRock"; 92="ProgessiveRock"; 93="PsychedelicRock"; 94="SymphonicRock"; 95="SlowRock"; 96="BigBand"; 97="Chorus"; 98="EasyListening"; 99="Acoustic"; 100="Humour"; 101="Speech"; 102="Chanson"; 103="Opera"; 104="ChamberMusic"; 105="Sonata"; 106="Symphony"; 107="BootyBass"; 108="Primus"; 109="PornGroove"; 110="Satire"; 111="SlowJam"; 112="Club"; 113="Tango"; 114="Samba"; 115="Folklore"; 116="Ballad"; 117="PowerBallad"; 118="RhythmicSoul"; 119="Freestyle"; 120="Duet"; 121="PunkRock"; 122="DrumSolo"; 123="Acapella"; 124="Euro-House"; 125="DanceHall"; 126="Goa"; 127="Drum&Bass"; 128="Club-House"; 129="Hardcore"; 130="Terror"; 131="Indie"; 132="BritPop"; 133="Negerpunk"; 134="PolskPunk"; 135="Beat"; 136="ChristianGangstaRap"; 137="HeavyMetal"; 138="BlackMetal"; 139="Crossover"; 140="ContemporaryChristian"; 141="ChristianRock"; 142="Merengue"; 143="Salsa"; 144="TrashMetal"; 145="Anime"; 146="JPop"; 147="Synthpop"; ID3V2 ID3V2到现在一共有4个版本,但流行的播放软件一般只支持第3版,既ID3v2.3。由于ID3V1记录在MP3文件的末尾,ID3V2就只好记录在MP3文件的首部了(如果有一天发布ID3V3,真不知道该记录在哪里)。也正是由于这个原因,对ID3V2的操作比ID3V1要慢。而且ID3V2结构比ID3V1的结构要复杂得多,但比前者全面且可以伸缩和扩展。 下面就介绍一下ID3V2.3。 每个ID3V2.3的标签都一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。标签头和标签帧一起顺序存放在MP3文件的首部。 一、标签头在文件的首部顺序记录10个字节的ID3V2.3的头部。数据结构如下: char Header[3]; /*必须为"ID3"否则认为标签不存在*/ char Ver; /*版本号ID3V2.3就记录3*/ char Revision; /*副版本号此版本记录为0*/ char Flag; /*存放标志的字节,这个版本只定义了三位,稍后详细解说*/ char Size[4]; /*标签大小,包括标签头的10个字节和所有的标签帧的大小*/ 1.标志字节 标志字节一般为0,定义如下: abc00000 a -- 表示是否使用Unsynchronisation(这个单词不知道是什么意思,字典里也没有找到,一般不设置) b -- 表示是否有扩展头部,一般没有(至少Winamp没有记录),所以一般也不设置 c -- 表示是否为测试标签(99.99%的标签都不是测试用的啦,所以一般也不设置) 一部分不能帖。 相关网址:http://dev.csdn.net/article/14/14798.shtm 一个很郁闷的问题,在线等答案!!! 关于TFileStream读写问题,在线等,问题解决后立即给分。 高分跪地!!求XP样式的分页控件!!!!!!!!!!!! 一个关于StringGrid的问题! 高手救命:程序在98下运行出错! 我正式宣布将我的ID自杀!散分(3)! 用delphi6+SQL2000做一个应用时出现错误提示“list index out of bounds(0)”,请教各位。 构造函数的一个问题 谁说ado方便??? 哪里有Delphi操纵Excel的完整资料?非常感谢! 那位知道“虚拟打印”的原理、实现代码? 急急 怎么才能知道MDI子窗体哪一个在最前面?
前言
2001年11月的一天,我决定整理一下我的硬盘中乱七八糟的MP3,但使用Winamp+Expleror效率太慢,到网上找了一下只有一个叫MP3/Tag Studio v2.6的工具还不错,可惜是阴文的不说,还只能用30天,而且要插广告。我呸,这么麻烦。一气之下,决定自己写一个从此在网上查阅资料,写下了这辈子的第一个自由软件和这篇文章。大家可以在http://www.csdn.net/cnshare/soft/10/10119.shtm看到这个软件的详细说明和下载链接。
ID3v1
ID3V1比较简单,它是存放在MP3文件的末尾,用16进制的编辑器打开一个MP3文件,查看其末尾的128个顺序存放字节,数据结构定义如下:
char Header[3]; /*标签头必须是"TAG"否则认为没有标签*/
char Title[30]; /*标题*/
char Artist[30]; /*作者*/
char Album[30]; /*专集*/
char Year[4]; /*出品年代*/
char Comment[30]; /*备注*/
char Genre; /*类型*/
ID3V1的各项信息都是顺序存放,没有任何标识将其分开,比如标题信息不足30个字节,则使用'\0'补足,否则将造成信息错误。Genre使用原码表示,对照表如下:
/* Standard genres */
0="Blues";
1="ClassicRock";
2="Country";
3="Dance";
4="Disco";
5="Funk";
6="Grunge";
7="Hip-Hop";
8="Jazz";
9="Metal";
10="NewAge";
11="Oldies";
12="Other";
13="Pop";
14="R&B";
15="Rap";
16="Reggae";
17="Rock";
18="Techno";
19="Industrial";
20="Alternative";
21="Ska";
22="DeathMetal";
23="Pranks";
24="Soundtrack";
25="Euro-Techno";
26="Ambient";
27="Trip-Hop";
28="Vocal";
29="Jazz+Funk";
30="Fusion";
31="Trance";
32="Classical";
33="Instrumental";
34="Acid";
35="House";
36="Game";
37="SoundClip";
38="Gospel";
39="Noise";
40="AlternRock";
41="Bass";
42="Soul";
43="Punk";
44="Space";
45="Meditative";
46="InstrumentalPop";
47="InstrumentalRock";
48="Ethnic";
49="Gothic";
50="Darkwave";
51="Techno-Industrial";
52="Electronic";
53="Pop-Folk";
54="Eurodance";
55="Dream";
56="SouthernRock";
57="Comedy";
58="Cult";
59="Gangsta";
60="Top40";
61="ChristianRap";
62="Pop/Funk";
63="Jungle";
64="NativeAmerican";
65="Cabaret";
66="NewWave";
67="Psychadelic";
68="Rave";
69="Showtunes";
70="Trailer";
71="Lo-Fi";
72="Tribal";
73="AcidPunk";
74="AcidJazz";
75="Polka";
76="Retro";
77="Musical";
78="Rock&Roll";
79="HardRock";
/* Extended genres */
80="Folk";
81="Folk-Rock";
82="NationalFolk";
83="Swing";
84="FastFusion";
85="Bebob";
86="Latin";
87="Revival";
88="Celtic";
89="Bluegrass";
90="Avantgarde";
91="GothicRock";
92="ProgessiveRock";
93="PsychedelicRock";
94="SymphonicRock";
95="SlowRock";
96="BigBand";
97="Chorus";
98="EasyListening";
99="Acoustic";
100="Humour";
101="Speech";
102="Chanson";
103="Opera";
104="ChamberMusic";
105="Sonata";
106="Symphony";
107="BootyBass";
108="Primus";
109="PornGroove";
110="Satire";
111="SlowJam";
112="Club";
113="Tango";
114="Samba";
115="Folklore";
116="Ballad";
117="PowerBallad";
118="RhythmicSoul";
119="Freestyle";
120="Duet";
121="PunkRock";
122="DrumSolo";
123="Acapella";
124="Euro-House";
125="DanceHall";
126="Goa";
127="Drum&Bass";
128="Club-House";
129="Hardcore";
130="Terror";
131="Indie";
132="BritPop";
133="Negerpunk";
134="PolskPunk";
135="Beat";
136="ChristianGangstaRap";
137="HeavyMetal";
138="BlackMetal";
139="Crossover";
140="ContemporaryChristian";
141="ChristianRock";
142="Merengue";
143="Salsa";
144="TrashMetal";
145="Anime";
146="JPop";
147="Synthpop";
ID3V2到现在一共有4个版本,但流行的播放软件一般只支持第3版,既ID3v2.3。由于ID3V1记录在MP3文件的末尾,ID3V2就只好记录在MP3文件的首部了(如果有一天发布ID3V3,真不知道该记录在哪里)。也正是由于这个原因,对ID3V2的操作比ID3V1要慢。而且ID3V2结构比ID3V1的结构要复杂得多,但比前者全面且可以伸缩和扩展。
下面就介绍一下ID3V2.3。
每个ID3V2.3的标签都一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。标签头和标签帧一起顺序存放在MP3文件的首部。
一、标签头
在文件的首部顺序记录10个字节的ID3V2.3的头部。数据结构如下:
char Header[3]; /*必须为"ID3"否则认为标签不存在*/
char Ver; /*版本号ID3V2.3就记录3*/
char Revision; /*副版本号此版本记录为0*/
char Flag; /*存放标志的字节,这个版本只定义了三位,稍后详细解说*/
char Size[4]; /*标签大小,包括标签头的10个字节和所有的标签帧的大小*/ 1.标志字节
标志字节一般为0,定义如下:
abc00000 a -- 表示是否使用Unsynchronisation(这个单词不知道是什么意思,字典里也没有找到,一般不设置)
b -- 表示是否有扩展头部,一般没有(至少Winamp没有记录),所以一般也不设置
c -- 表示是否为测试标签(99.99%的标签都不是测试用的啦,所以一般也不设置)
相关网址:http://dev.csdn.net/article/14/14798.shtm