1

我正在尝试在网页上播放 mp3 声音,声音作为 mp3 存储在 SQL 数据库中,因此通过 Service 方法作为 byte[] 返回。

我的问题是,在 Chrome 中这可以正常工作,但在 IE 中却不行,只要我开始使用 ASPX URL 作为源然后即拒绝播放声音。我也尝试了更多的成功,但没有使用动态 URL。我是否遗漏了一些明显的东西,或者这只是 IE 很难。在调试时我发现 IE 甚至没有尝试调用这个 URL,因为它已经决定它不喜欢这个 URL。非常感谢任何帮助。

  1. <audio><source> 方法_

方法一。(不适用于 IE)

    <audio controls="controls" >
      <source src="PlayAudio.aspx?AudioId=AUDIO00253" />
      Sound Not Supported
    </audio>

方法二。(不适用于 IE)

    <audio controls="controls" >
      <source src="Cyclone.mp3" />
      Sound Not Supported
     </audio>
  1. <embed>方法_

方法一。(不适用于 IE)

   <embed  src="PlayAudio.aspx?AudioId=AUDIO00253" autostart="true" ></embed>

方法二。(在 IE 中工作)

   <embed  src="Cyclone.mp3" autostart="true"></embed>

所有这四种方法在 Chrome 中都可以正常工作

提供 mp3 字节流的 ASPX 方法,我知道这在 Chrome 中可以正常工作。

  private void SendAudio( byte[] audio )
  {
    // Stream byte array to memory stream
    var memStream = new MemoryStream( audio );

    // Write memory stream to response
    Response.ContentType = "audio/mpeg";
    memStream.WriteTo( Response.OutputStream );
    memStream.Close();
  }
4

2 回答 2

0

首先<audio>&<source>标签是 HTML 5 中的新标签,IE 不支持,因此它们不能在 Internet Explorer 中工作(它们应该在 FireFox 4+、Chrome 3+、Safari 4+、Opera 9+ 和任何其他支持 HTML 5 的浏览器。)

其次,您的代码对您的方法是正确的,但是我过去遇到过问题。我相信标签的 src 属性<embed>需要一个实际的声音文件而不是脚本来执行。

现在浏览器正在尝试播放它不能播放的脚本。由于您的声音数据存储在数据库中,因此在带有<embed>标签的页面上,您需要创建一个临时文件来写入数据,然后在<embed>标签中调用该临时文件。

我不是 ASPX 的专业人士,但我会尽力为您调查。

干杯:)

于 2012-08-20T23:13:36.853 回答
0

我被这个卡住了一会儿。在这里,embed 也不适用于 IE 上的.aspx.ashx文件,但它确实适用于经典的 .asp。可能对扩展有某种验证。您可以将 .asp 文件添加到现代 asp.net Visual Studio 项目中。

于 2015-01-02T17:20:01.750 回答