我正在尝试在网页上播放mp3声音,该声音以mp3的形式存储在SQL数据库中,因此通过Service方法作为byte []返回。
我的问题是,在Chrome中可以正常工作,但在IE中则不能,一旦我开始使用ASPX URL作为源,即无法播放声音。我还尝试了一些成功,但没有使用动态URL。我是否错过了一些明显的东西,或者仅仅是IE很难。在调试时,我发现IE甚至没有尝试调用此URL,这是因为它决定不喜欢该URL。任何帮助,不胜感激。
<audio><source>
方法方法一。 (在IE中不起作用)
<audio controls="controls" >
<source src="PlayAudio.aspx?AudioId=AUDIO00253" />
Sound Not Supported
</audio>
方法ii。 (在IE中不起作用)
<audio controls="controls" >
<source src="Cyclone.mp3" />
Sound Not Supported
</audio>
<embed>
方法方法一。 (在IE中不起作用)
<embed src="PlayAudio.aspx?AudioId=AUDIO00253" autostart="true" ></embed>
方法ii。 (可以在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();
}
最佳答案
首先,<audio>
和<source>
标记是HTML 5中的新功能,IE不支持该标记,因此它们将无法在Internet Explorer中使用(它们在FireFox 4 +,Chrome 3 +,Safari 4 +,Opera 9+和任何其他启用HTML 5的浏览器。)
其次,您的代码对您的方法是正确的,但是我过去曾遇到过问题。我相信<embed>
标记的src属性需要一个实际的声音文件而不是脚本来执行。
目前,浏览器正在尝试播放无法播放的脚本。由于声音数据存储在数据库中,因此在带有<embed>
标记的页面上,您需要创建一个临时文件来写入数据,然后在<embed>
标记中调用该临时文件。
我不是ASPX的专业人士,但我会尽力为您研究它。
干杯:)