0

我正在尝试使用音频元素播放 wav 文件。当我直接引用文件时,这很有效,但是当我尝试通过 ac# FileStream 流式传输它时它停止工作。下面的代码非常适合 PC 上的 Chrome 和 Opera,但我正试图让它在 Ipad 和 Firefox 上工作。我正在使用 .net 框架 2.0 我必须使用 wav。

<audio id="audio" src="www.acme.com/streamer.aspx?music=test.wav" controls preload="auto"></audio> Not working
<audio id="audio" src="test.wav" controls preload="auto"></audio> Working

下面的流函数:

string wavFileName = test.wav;
FileStream soundStream;
long FileSize;


soundStream = new FileStream(@"\\netshare\" + wavfileName, FileMode.Open, FileAccess.Read, FileShare.Read, 256);
FileSize = soundStream.Length;
byte[] Buffer = new byte[(int)FileSize];
int count = 0;
int offset = 0;
while ((count = soundStream.Read(Buffer, offset,
Buffer.Length)) > 0)
{
    Response.OutputStream.Write(Buffer, offset, count);
}
Response.Buffer = true;
Response.Clear();

Response.AddHeader("Content-Type", "audio/wave");
Response.AddHeader("Content-Disposition", "attachment;filename=" + wavfileName);
Response.ContentType = "audio/wave";
Response.BinaryWrite(Buffer);
if (soundStream != null)
{
    soundStream.Close();
}

Response.End();

(顺便说一句,这是我的第一篇文章,希望我没有违反任何规则)

4

1 回答 1

2

代码看起来不错。我认为您需要确保 wav 文件为写入 PCM 格式。某些浏览器在播放某些 PCM 时出现问题。我发现仅仅因为浏览(html5))支持wav文件并不意味着它实际上会播放所有wav类型。

您可能还想刷新响应。

于 2012-06-12T18:56:06.190 回答