音乐网站设制与建构

时间:2022-08-23 10:17:44

音乐网站设制与建构

引言

随着互联网基础建设的不断完善,用户连接网络的速度在不断提高。互联网的应用形式已从先前单纯的图形、文本形式发展到了图像、音频和视频兼具的高级形式。人们使用互联网的范围也从简单的浏览信息、收发邮件,发展到在线听音乐、在线看电影等。由于音频文件的录制码率要远远低于视频文件,因此其播放速度和质量在当前网络环境中几乎不存在任何瓶颈,在线音乐网站已成为互联网的应用热点。在线音乐网站是以音频文件为主要内容的网站,网页中支持的音频文件类型包括:MP3、WAV、RM和WMA等。其中WMA(Windows MediaAudio)是微软力推的一种数字音乐格式,因其高音质、高压缩比而得到了广泛的使用。本文介绍了利用ASP技术和Access数据库技术设计与实现在线音乐网站的方法,对连接数据库、显示音乐信息、用超文本链接控制流媒体文件播放跳转、网页播放器的实现以及如何制作ASX文件等关键技术,进行了详细分析。

1 在线音乐网站设计思路

在线音乐网站一般在主页显示音频文件列表信息,音频文件的相关信息及路径保存在后台数据库中。音频文件存放在硬盘中,或来自网络,用户作出选择后,即可播放对应的音频文件。本案例中网站主页运行效果如图1所示,单击播放,即弹出网页播放器窗口,如图2所示,播放对应的音频文件。由于目前通用的浏览器通常均不能直接支持用于播放流信息的协议MMS,可以用超文本链接控制WMA流媒体文件播放的跳转,用<a href="http://#">为相应的文字建立空超文本链接,并用onclick事件和window.open函数控制在弹出窗口中显示网页播放器。通过采用 ASX 文件一在 ASX 文件中包含媒体内容对应的URL,浏览器会直接将ASX的内容送给播放器,播放器会根据ASX文件的信息,用相应的协议去打开指定位置上的多媒体信息流或多媒体文件,于是,播放器就可以用MMS协议来播放流信息。

2 数据库设计

Access具有界面友好、易学易用、开发简单、接口灵活等特点,非常适用于开发小型动态网站,因此本系统采用Access作为后台数据库[1]。在Access 2003中新建一个数据库musicdata.mdb,它包含一张表music,用于保存所有音乐文件信息。music数据表的结构如表1所示。本案例中,数据库文件保存在网站根文件夹下的database文件夹中,所有WMA音乐文件保存在网站根文件夹下的wma文件夹中。

3 关键技术的具体实现

3.1 连接数据库的实现

数据库连接代码单独编制成一个文件,放在conn.asp中。在其他文件中用<!--#include file="conn.asp"-->命令,将其包含进来。首先建立connection对象实例conn,数据库连接使用OLEDB技术,其中:data source表示数据库的物理路径,利用server对象的MapPath方法可将相对路径转换为物理路径;provider表示数据库的OLE DB驱动程序[2]。其次利用Open方法建立与数据库的连接。conn.asp文件代码如下:dim conn,connstr'声明变量set conn=server.CreateObject("adodb.connection")'建立connection对象实例connconnstr="data source=" & server.MapPath("database/musicdata.mdb") &";provider=microsoft.jet.oledb.4.0" '定义数据库连接字符串conn.open(connstr)'建立与数据库的连接

3.2 显示音乐信息的实现

网站所有音乐文件相关信息都保存在后台数据库musicdata.mdb的数据表music中。要在主页上显示歌曲相关信息,相应程序应包含以下部分。第一部分是连接数据库。用<!--#include file="conn.asp"-->命令,调用conn.asp文件,利用OLE DB技术连接数据库。第二部分是建立Recordset对象。代码如下:dim rs,strSql '声明变量strsql="select * From music Order By id desc" '根据 music表建立查询,并按id降序排列Set rs=Server.CreateObject("ADODB.Recordset")'建立Recordset对象实例rsrs.Open strsql,conn,1,2,1 '打开记录集第三部分是利用一个Do ……Loop循环实现歌曲相关信息的显示。在循环体中,利用Response对象的Write方法的省略格式<%=rs("字段名称")%>,在表格中输出歌曲相关信息。程序主要代码如下:Do While Not rs.Eof '如果不是记录集结尾,就执行循环…… '插入一个表格,在表格中显示一条歌曲记录,代码详见表2。rs.MoveNext '将记录指针移动到下一条记录Loop

3.3 用超文本链接控制流媒体文件播放跳转的实现

在主页上制作指向文字“播放”的空超文本链接,并给<A>标记添加一个onclick事件,利用window.open 函数,在窗口中打开一个网页播放器,利用ASX文件。当网页访问用户单击该超链接后,将在弹出新窗口中启动网页播放器,并开始播放ASX文件中指定的WMA音乐文件。在主页中为“播放”文本建立超级链接的代码如下:<a href="http://#" onClick="window.open('Playmusic.asp?id=<%=rs("id")%>', 'sunmusic ', 'menubar=no,scrollbars=no,resizable=no,width=400,height=190,top=168,left=168')" >播放</a>其中,<a>是超链接标记,href属性用来指定链接的目标地址,onclick事件为鼠标单击事件,window.open函数用于在网页上弹出一个新窗口,其各参数的功能如表3所示。当用户单击“播放”,将在屏幕上弹出一个新窗口,窗口内显示网页播放器。

3.4 网页播放器的实现

Playmusic.asp文件包含播放器代码,用于根据传递过来的ID值,从数据库中查询匹配的WMA音乐文件信息,在网页播放器页面中显示相关音乐文件信息。相应该程序主要由三部分组成。第一部分是连接数据库。用<!--#include file="conn.asp"-->命令,调用conn.asp文件,利用OLE DB技术连接数据库。第二部分是根据传递过来的ID值,建立Recordset对象,并从记录集中获取相关数据。程序代码如下:dim conn,connstr '声明变量set rs=server.createobject("adodb.recordset") '建立 Recordset 对象实例rsid=request.querystring("id") '获取传递过来的 ID 值sql="select * from music where id="&id '在 music 表中查询与ID值匹配的记录rs.open sql,conn,1,3 '打开记录集id=trim(rs("id")) '从记录集获取 id 值Singer=trim(rs("singer")) ' 从 记 录 集 获 取singer 值MusicName=trim(rs("musicname")) '从记录集获取 musicname 值第三部分是插入网页播放器代码,实现音乐文件的播放功能。播放器会根据ASX文件playwma.asp中的信息,用相应的协议打开指定位置上的多媒体信息流文件,用MMS协议播放WMA音乐文件。网页播放器代码如下:<OBJECT CLASSID="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6"ID="mPlayer1" width=375 height=62 align="left"><param name="URL" value="playwma.asp?id=<%=id%>"><!--播放的文件地址--><!-其余代码略--></OBJECT>

3.5 制作ASX文件

网页播放器中出现的playwma.asp文件,是一个ASX文件,它包含ASX代码,以文本形式记录WMV等多媒体文件的地址。ASX文件是一个纯文本文件,主要用于对流信息进行重定向。ASX中包含了媒体内容对应的URL,播放器会根据ASX文件的信息,用相应的协议去打开指定位置上的多媒体信息流或多媒体文件。由于本案例中的ASX文件,需要根据传递过来的ID值,从数据库中查询匹配的WMA音乐文件路径,再到硬盘上找到对应的音乐文件,实现音乐文件的播放,因此文件扩展名为ASP。该文件由四部分组成。第一部分是连接数据库。用<!--#include file="conn.asp"-->命令,调用conn.asp文件,利用OLE DB技术连接数据库。第二部分是根据传递过来的ID值,建立Recordset对象。程序代码如下:set rs=server.createobject("adodb.recordset") ' 建立 Recordset对象实例rsid=request.QueryString("id") '获取传递过来的 ID 值sql="select * from music where id="&id '在 music 表中查询与ID值匹配的记录rs.open sql,conn,1,3 '打开记录集第三部分是编写ASX代码。ASX代码与HTML非常相似。代码如下:<ASX version = "3.0"><entry SKIPIFREF="YES"><ref href="http://<%=rs("wma")%>"/><param name="Artist" value="<%=rs("singer")%>"/><param name="Title" value="<%=rs("Musicname")%>"/></entry></ASX>其中,<ASX></ASX>表示ASX文件的开始和结束;version="3.0"表示文件所使用的标记命令版本是 3.0;< entry ></entry >表示一个节目的片断,用来设置播放器的元信息,每首WMA 歌曲的信息都要包含在一对<entry>标记里面;< refhref ="歌曲地址" >用来设定待播放的媒体文件的路径或者URL地址,可以是电脑本地歌曲文件路径,也可以是歌曲文件的网络地址,本案例中为从后台数据库中获取歌曲文件路径;<param name=>用于在网页播放器中显示歌手名和歌曲名。第四部分是关闭数据库,清除有关对象。rs.Close '关闭记录集对象set rs=nothing '从内存中清除该对象变量 rsconn.close '关闭与数据库的连接set conn=nothing '从内存中清除该对象变量 conn

4 结束语

经测试,我们设计的网站运行正确。网站通过使用ASP的数据库存取组件ADO的内部对象,实现对保存在后台数据库中的音乐文件的显示和播放操作。在线音乐网站的其他功能,如用户注册功能,用户登录功能,音频文件上传等的功能,可根据网站需求作设计。

上一篇:高职学院网站设制开发 下一篇:地图网站设制与应用