读取MP3文件的ID3v1信息1
点击次数:27 次 发布日期:2008-11-26 12:01:09 作者:源代码网
|
源代码网推荐 源代码网推荐 首先我们来看看mp3歌曲的信息所存放的位置。Mp3文件包含一个叫做ID3的标签。其实有两个标签,一个叫做ID3v1,另外一个叫做ID3v2。为了讲述的简单起见,我们这里只介绍ID3v1。 源代码网推荐 源代码网推荐 ID3V1结构比较简单,存放在MP3文件的末尾,大家可以用16进制的编辑器(例如:UltraEdit)打开一个MP3文件,注意其末尾的128个字节,数据结构定义如下: 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 名称 位置 长度 内容 源代码网推荐 源代码网推荐 Header 1-3 3 标签头 源代码网推荐 源代码网推荐 Title 4-33 30 标题 源代码网推荐 源代码网推荐 Artist 34-63 30 艺术家 源代码网推荐 源代码网推荐 Album 64-93 30 专辑 源代码网推荐 源代码网推荐 Year 94-97 4 出品年代 源代码网推荐 源代码网推荐 Comment 98-127 30 备注 源代码网推荐 源代码网推荐 Cenre 128 1 类型 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 注意:上述的标签头必须是”TAG”, 否则表示没有标签 源代码网推荐 源代码网推荐 ID3v1的各项信息是按顺序依次存放的,每项信息之后并没有任何的结束标志,如果某项信息长度小于标准长度,使用” ”来补充。另外Genre是个例外,它用一个字节表示歌曲流派,其对应表如下(由于该内容太多,只列出前50项): 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 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" 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 知道了MP3歌曲信息存放的结构之后,我们就可以写出对应的代码。 源代码网推荐 源代码网推荐 首先定一个MP3Info类: 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 1 Public Class Mp3Info 源代码网推荐 2 源代码网推荐 3 源代码网推荐 4 源代码网推荐 5 Private Const TAGLEN As Integer = 128 源代码网推荐 6 源代码网推荐 7 源代码网推荐 8 源代码网推荐 9 Private _MP3Tag As String = String.Empty 源代码网推荐 10 源代码网推荐 11 Private _Artist As String = String.Empty 源代码网推荐 12 源代码网推荐 13 Private _Title As String = String.Empty 源代码网推荐 14 源代码网推荐 15 Private _Album As String = String.Empty 源代码网推荐 16 源代码网推荐 17 Private _Comment As String = String.Empty 源代码网推荐 18 源代码网推荐 19 Private _Year As String = String.Empty 源代码网推荐 20 源代码网推荐 21 Private _Genre As String = String.Empty 源代码网推荐 22 源代码网推荐 23 Private _GenreID As Byte 源代码网推荐 24 源代码网推荐 25 源代码网推荐 26 源代码网推荐 27 Private Genres() As String = {"Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", _ 源代码网推荐 28 源代码网推荐 29 "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", "Rap", "Reggae", "Rock", _ 源代码网推荐 30 源代码网推荐 31 "Techno", "Industrial", "Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", _ 源代码网推荐 32 源代码网推荐 33 "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", "Instrumental", "Acid", _ 源代码网推荐 34 源代码网推荐 35 "House", "Game", "Sound Clip", "Gospel", "Noise", "AlternRock", "Bass", "Soul", "Punk", "Space", _ 源代码网推荐 36 源代码网推荐 37 "Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", _ 源代码网推荐 38 源代码网推荐 39 "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", "Top 40", _ 源代码网推荐 40 源代码网推荐 41 "Christian Rap", "Pop/Funk", "Jungle", "Native American", "Cabaret", "New Wave", "Psychedelic", "Rave", _ 源代码网推荐 42 源代码网推荐 43 "Showtunes", "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", _ 源代码网推荐 44 源代码网推荐 45 "Rock & Roll", "Hard Rock", "Folk", "Folk/Rock", "National Folk", "Swing", "Bebob", "Latin", "Revival", _ 源代码网推荐 46 源代码网推荐 47 "Celtic", "Bluegrass", "Avantgarde", "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", _ 源代码网推荐 48 源代码网推荐 49 "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic", "Humour", "Speech", "Chanson", "Opera", _ 源代码网推荐 50 源代码网推荐 51 "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", "Porn Groove", "Satire", "Slow Jam", "Club", _ 源代码网推荐 52 源代码网推荐 53 "Tango", "Samba", "Folklore"} 源代码网推荐 54 源代码网推荐 55 源代码网推荐 56 源代码网推荐 57 Public Property MP3Tag() As String 源代码网推荐 58 源代码网推荐 59 Get 源代码网推荐 60 源代码网推荐 61 Return _MP3Tag 源代码网推荐 62 源代码网推荐 63 End Get 源代码网推荐 64 源代码网推荐 65 Set(ByVal value As String) 源代码网推荐 66 源代码网推荐 67 _MP3Tag = value.Trim 源代码网推荐 68 源代码网推荐 69 End Set 源代码网推荐 70 源代码网推荐 71 End Property 源代码网推荐 72 源代码网推荐 73 源代码网推荐 74 源代码网推荐 75 Public Property Title() As String 源代码网推荐 76 源代码网推荐 77 Get 源代码网推荐 78 源代码网推荐 79 Return _Title 源代码网推荐 80 源代码网推荐 81 End Get 源代码网推荐 82 源代码网推荐 83 Set(ByVal value As String) 源代码网推荐 84 源代码网推荐 85 _Title = value.Trim 源代码网推荐 86 源代码网推荐 87 End Set 源代码网推荐 88 源代码网推荐 89 End Property 源代码网推荐 90 源代码网推荐 91 源代码网推荐 92 源代码网推荐 93 Public Property Artist() As String 源代码网推荐 94 源代码网推荐 95 Get 源代码网推荐 96 源代码网推荐 97 Return _Artist 源代码网推荐 98 源代码网推荐 99 End Get 源代码网推荐 100 源代码网推荐 101 Set(ByVal value As String) 源代码网推荐 102 源代码网推荐 103 _Artist = value.Trim 源代码网推荐 104 源代码网推荐 105 End Set 源代码网推荐 106 源代码网推荐 107 End Property 源代码网推荐 108 源代码网推荐 109 源代码网推荐 110 源代码网推荐 111 Public Property Album() As String 源代码网推荐 112 源代码网推荐 113 Get 源代码网推荐 114 源代码网推荐 115 Return _Album 源代码网推荐 116 源代码网推荐 117 End Get 源代码网推荐 118 源代码网推荐 119 Set(ByVal value As String) 源代码网推荐 120 源代码网推荐 121 _Album = value.Trim 源代码网推荐 122 源代码网推荐 123 End Set 源代码网推荐 124 源代码网推荐 125 End Property 源代码网推荐 126 源代码网推荐 127 源代码网推荐 128 源代码网推荐 129 Public Property Comment() As String 源代码网推荐 130 源代码网推荐 131 Get 源代码网推荐 132 源代码网推荐 133 Return _Comment 源代码网推荐 134 源代码网推荐 135 End Get 源代码网推荐 136 源代码网推荐 137 Set(ByVal value As String) 源代码网推荐 138 源代码网推荐 139 _Comment = value.Trim 源代码网推荐 140 源代码网推荐 141 End Set 源代码网推荐 142 源代码网推荐 143 End Property 源代码网推荐 144 源代码网推荐 145 源代码网推荐 146 源代码网推荐 147 Public Property Genre() As String 源代码网推荐 148 源代码网推荐 149 Get 源代码网推荐 150 源代码网推荐 151 Return _Genre 源代码网推荐 152 源代码网推荐 153 End Get 源代码网推荐 154 源代码网推荐 155 Set(ByVal value As String) 源代码网推荐 156 源代码网推荐 157 _Genre = value.Trim 源代码网推荐 158 源代码网推荐 159 End Set 源代码网推荐 160 源代码网推荐 161 End Property 源代码网推荐 162 源代码网推荐 163 源代码网推荐 164 源代码网推荐 165 Public Property GenreID() As Byte 源代码网推荐 166 源代码网推荐 167 Get 源代码网推荐 168 源代码网推荐 169 Return _GenreID 源代码网推荐 170 源代码网推荐 171 End Get 源代码网推荐 172 源代码网推荐 173 Set(ByVal value As Byte) 源代码网推荐 174 源代码网推荐 175 _GenreID = value 源代码网推荐 176 源代码网推荐 177 End Set 源代码网推荐 178 源代码网推荐 179 End Property 源代码网推荐 180 源代码网推荐 181 源代码网推荐 182 源代码网推荐 183 Public Property Year() As String 源代码网推荐 184 源代码网推荐 185 Get 源代码网推荐 186 源代码网推荐 187 Return _Year 源代码网推荐 188 源代码网推荐 189 End Get 源代码网推荐 190 源代码网推荐 191 Set(ByVal value As String) 源代码网推荐 192 源代码网推荐 193 _Year = value.Trim 源代码网推荐 194 源代码网推荐 195 End Set 源代码网推荐 196 源代码网推荐 197 End Property 源代码网推荐 198 源代码网推荐 199 End Class 源代码网推荐 200 源代码网推荐 201 源代码网推荐 202 源代码网推荐 203 上面的类只包含了mp3歌曲信息对应的数据结构,我们还要为它添加具体读取mp3文件信息的过程: 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
