使用 ASP.NET、Flash 和 Cassini Web 服务器构建可重新分发的基于 Web 的 MP3 播放器






4.63/5 (5投票s)
2007年4月27日
5分钟阅读

69647

1629
本文介绍如何构建一个易于重新分发的 ASP.NET 应用程序,该应用程序可以播放托管该应用程序的系统上任何文件夹中的 MP3 音乐。Cassini 服务器用于消除 IIS 的要求,并允许应用程序访问本地文件和文件夹,而无需依赖
- 此示例现已开源。在此处获取最新版本。
- 下载源代码 - 1.32 MB
源代码包括一个 Visual Studio 2005 解决方案,其中包含一个 ASP.NET 应用程序和一个安装程序项目。
引言
本文的源代码展示了如何构建一个简单的基于 Web 的 MP3 文件媒体播放器,并演示了 ASP.NET 编程的几个方面,例如缓存、HTTP 处理程序的用法以及为可重新分发的 ASP.NET 应用程序创建与 IIS 无关的安装程序。
最终,您将构建一个看起来像这样的可安装应用程序
使用代码
重要提示:将存档解压缩到“C:\”。如果在 64 位系统上打开解决方案,则可能需要更改某些项目路径设置。
必备组件
- Visual Studio 2005
- 适用于 ASP.NET 2.0 的 UltiDev Cassini Web 服务器
UltiDev Cassini 与应用程序一起打包到 Setup.exe 中,以便最终应用程序不会依赖目标系统上是否存在 IIS。
开始吧(准备就绪)
很久以前,我偶然发现了一个很棒的免费软件:一个基于 Flash 的 XSPF 兼容 MP3 播放器。当嵌入页面时,它可以接受 HTTP 播放列表并播放。第二个优点是 XSPF 播放列表格式具有可用的 XSD 架构。 .NET Framework xsd.exe 实用程序可以将 XSD 架构轻松转换为 C# 或 VB.NET 类,这些类封装了 XSD 定义的数据结构,并实现了与符合架构的 XML 文件之间的 XML 序列化。因此,我有一个 XSPF 兼容的 MP3 播放器和一个免费的代码生成 XSPF 兼容的 XML。这意味着我可以轻松地即时创建 XSPF 兼容的播放列表。只可惜我缺少一个免费的 ID3 标签(MP3 文件元数据)访问 API...
为 .NET 查找 ID3v2 库比我预想的要困难。不过,我的搜索最终成功了。UltraID3Lib 最终正是我所需要的。它是一个不错的库;也许,它有点过度面向对象了。
最后一块是适用于 ASP.NET 2.0 的 UltiDev Cassini Web 服务器。这是必需的,因为首先,它可以与任何 ASP.NET 应用程序打包和分发,从而消除了对 IIS 的要求。其次,与 IIS 不同,UltiDev Cassini 服务在“本地系统”帐户下运行,这允许访问服务器上的任何本地文件和文件夹。有一点需要注意:虽然拥有一个在强大帐户下运行的 Web 服务器非常方便,但如果应用程序暴露在 Web 上,可能会带来风险。最好在受保护的本地区域网络内使用该应用程序。
在下载解决方案后,将其解压缩到 C:\。它将创建一个“C:\UltiDevMusicPlayerSample”文件夹。如果您想将其放在其他文件夹中——您也可以这样做——只需稍后调整您的项目调试设置以指向正确的应用程序文件夹(见下文)。
应用程序流程
- 该应用程序有一个页面 (Default.aspx),其中包含播放器控件和文件系统浏览器(Controls/PlayerControl.ascx 和 Controls/PlayerControl.ascx.cs)。
- 用户选择包含 MP3 文件的文件夹后,文件系统浏览器树将被隐藏,播放器控件将重新渲染以指向动态生成的播放列表,该播放列表代表所选文件夹。
- 播放器控件请求动态播放列表,自定义
IHttpHandler
(AppCode/PlaylistClass.cs 和 AppCode/xspf.cs)提供 XSPF 编码的播放列表,其中包含所选文件夹中的歌曲。播放列表包含从歌曲的 ID3v2 和 ID3v1 MP3 标签中检索到的歌曲信息。 - 播放器逐首播放歌曲:通过自定义
IHttpHandler
(Handlers/Song.ashx)请求每首歌曲,从本地文件系统提供歌曲。歌曲开始播放后,播放器还会通过自定义IHttpHandler
(Handlers/CoverArt.ashx)请求歌曲的专辑封面(封面图),该处理程序提供从歌曲的 ID3v2 标签中提取的图像。
调试
我在获取 Visual Studio 2005 内部 Web 服务器提供 Flash 组件时遇到了麻烦。我切换到 UltiDev Cassini 进行调试,这解决了问题。由于该应用程序最终将在 UltiDev Cassini 下运行,因此使用 UltiDev Cassini 进行调试可能是一个好主意。
要切换到 UltiDev Cassini,请打开 ASP.NET 应用程序的属性,然后在左侧选择“启动选项”,并选中“启动外部程序”单选按钮。将“C:\Program Files\UltiDev\Cassini Web Server for ASP.NET 2.0\UltiDevCassinWebServer2.exe”作为调试要使用的程序,并指定“/run c:\UltiDevMusicPlayerSample\WebApp Default.aspx 4125”(不带引号)作为命令行参数。如果您已将解决方案解压缩到“C:\”以外的文件夹,则需要修改命令行参数中的 c:\UltiDevMusicPlayerSample\WebApp 部分以指向实际的应用程序位置。
Setup 项目
与常规 ASP.NET 应用程序不同,此应用程序使用常规(非 Web)安装程序项目来实现安装程序。原因是 Visual Studio Web 安装程序项目实际上是一个 IIS 安装程序项目。由于我们使用的是 UltiDev Cassini 而不是 IIS,因此需要使用常规安装程序项目。
安装程序项目将 UltiDev Cassini 打包到 Setup.exe 引导程序中,并确保在安装过程中将应用程序注册到 UltiDev Cassini,并在卸载过程中取消注册。
为捆绑了 UltiDev Cassini 的 ASP.NET 应用程序创建安装程序项目并不复杂,但如果您需要分步指南,请参阅此演练。
重要提示:安装应用程序时,不要只单击 .MSI 文件。您需要运行 Setup.exe 以确保 UltiDev Cassini Web 服务器安装在目标系统上。在 Vista 上尤其如此,因为单击 .MSI 和运行 Setup.exe 的功能差别很大,不像在 Windows XP 上。
构建并享受!