当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  读取MP3文件的ID3v1信息1

 读取MP3文件的ID3v1信息1

点击次数:27 次 发布日期:2008-11-26 12:01:09 作者:源代码网
源代码网推荐      前段时间,在局域网里面做一个小网站,其中有板块是涉及音乐的在线播放。考虑到以后维护的方便,决定把mp3文件都按专辑分不同的目录存放。然后使用一个程序监控存放mp3的目录,把每个mp3文件的信息都存入数据库中,用过ASP.NET页面将mp3文件的信息呈现给用户。其中使用.NET来读取mp3 文件的信息虽然不难,但也需要不少技巧,故将该过程整理与大家分享。
源代码网推荐  
源代码网推荐   首先我们来看看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)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华