【发布时间】:2013-08-22 13:41:35
【问题描述】:
我正在为 HTML5 音频完整的 .aspx 页面提供二进制数据。该文件可以播放,但 SeekBar 和在 Safari (iPad)、Chrome 和 Firefox 中重播存在问题。
编辑我已经简化(希望不会太多)代码和完整列表是呈现(页面文件名明显是play.aspx)。
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if ( Request["filename"] != null)
{
string FilePath = MapPath(Request["filename"]);
long fSize = (new System.IO.FileInfo(FilePath)).Length;
//Headers
Response.AddHeader("Content-Length",fSize.ToString());
Response.ContentType = "audio/mp3";
//Data
Response.WriteFile(FilePath);
Response.End();
};
}
</script>
<body>
<p>Direct</p>
<audio controls="controls" preload="none">
<source src="sound.mp3" type="audio/mp3" />
</audio>
<p>Provided</p>
<audio controls="controls" preload="none">
<source src="play.aspx?filename=sound.mp3" type="audio/mp3" />
</audio>
</body>
</html>
所以提供了Content-Length 和Content-Type 标头。当直接访问文件或通过 .aspx 页面访问文件时,两个 <audio> 标记启用比较行为。
问题是如何向<audio>标签提供数据,在所有必需的浏览器(ff、safari、chrome、IE9+)上都能正常运行。
问题
Safari (iPad): 当按下播放按钮时,会播放声音,但会出现“Streaming ...”而不是 Seek Bar,并且播放似乎永远持续并且无法重播声音。
Firefox(windows): 搜索栏已显示,但显示的时间越来越长,直到结束,并且在重播时行为正确。
Chrome(windows): 搜索栏正确但无法重播。
IE10:好的
我发现了类似的问题,但没有答案。从用提琴手观察另一个页面看来,标题Accept-Ranges: bytes 和Content-Range: bytes 0-8100780/8100781 可以提供帮助。但是提供必要的功能似乎太难了,所以我没有尝试。
注意 我正在寻找How to play .m4a with HTML5 audio in IE(9+) and Safari (Pad)?中其他相关问题的解决方案@
【问题讨论】:
-
你应该看看 jPlayer,它已经为你内置了所有内容,并为不支持 HTML5 的浏览器提供了备用jplayer.org
-
@mattytommo:jPlayer 不错。但是我想在现在的浏览器上我会面临与 HTML5 音频相同的问题(源数据未被控件正确接受)。
标签: c# asp.net html cross-browser html5-audio