前段时间,在局域网里面做一个小网站,其中有板块是涉及音乐的在线播放。考虑到以后维护的方便,决定把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项):
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器