设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源分享平台

读取MP3文件的ID3v1信息

来源:网络收集 作者:佚名 时间:2007-04-25 23:16:34

      前段时间,在局域网里面做一个小网站,其中有板块是涉及音乐的在线播放。考虑到以后维护的方便,决定把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的各项信息是按顺序依次存放的,每项信息之后并没有任何的结束标志,如果某项信息长度小于标准长度,使用”\0”来补充。另外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

[1] [2] [3] [4] [5]  下一页

Tags:

  • 好的评价 如果您觉得好,就请您
      0%(0)
  • 差的评价 如果您觉得差,就请您
      0%(0)
  • 相关文章
    广告赞助

    文章随便看看 设计素材 建站学院 网页模板 视频教程

    网友评论

    共有 0 位网友发表了评论,得分 0 分,平均 0 分    查看完整评论

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 1分

    内 容:

             通知管理员 验证码: