从内存流播放 mp3/wav 文件到网页

Posted

技术标签:

【中文标题】从内存流播放 mp3/wav 文件到网页【英文标题】:Play mp3/wav file from memorystream to webpage 【发布时间】:2012-07-06 13:30:13 【问题描述】:

最近有人找我开发一个应用程序 (asp.net/c#),让用户可以收听存储在某些共享文件夹中的一些音频文件。

用户无权访问共享文件夹,文件应该被流式传输。此外,页面应提供播放/停止/暂停/前进/后退功能,以及经过时间/总时间信息。

所以我设置了一个访问所需文件的网络服务,并返回一个包含 mp3/wav 音频的 Byte[](实际上我必须在返回 Byte[] 之前将它们转换为所需的 mp3/wav 格式)。

问题是我不知道如何在网页中呈现它。

我需要的是一个带有一些控件的网页,它提供必要的功能和信息,从 Byte[] 加载。

我研究了网络并尝试了很多 sn-ps 和控件,但完全没有运气。

关于如何实现它的任何想法或方向?

提前致谢, 安东尼奥

【问题讨论】:

【参考方案1】:

如果您希望您的用户使用相当新的浏览器版本,您可以使用html5's audio tag。您将src 设置为将设置为将byte[] 写入响应流的URL(例如,可能将byte[] 存储在Session 中,创建一个.ashx 处理程序页面来返回它,并且设置src="myHandler.ashx")。

【讨论】:

谢谢。我已经进行了一些初步测试,一切都表明它可以工作。我没有想到使用处理程序!最终用户将不得不升级浏览器版本,但是嘿,他们将拥有他们想要的:)【参考方案2】:

一个好的方法是使用 silverlight 或 flash 播放器,甚至是 java 小程序。

【讨论】:

以上是关于从内存流播放 mp3/wav 文件到网页的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 从内存流中播放 .wma

从 WPF 中的内存流(不包含 wav 标头)播放

java中的io流

在不使用库的情况下播放 MP3/WAV 文件?

JavaSE——数据类型流内存流打印流

JavaSE——数据类型流内存流打印流