3

我正在尝试开发 HTML5 游戏。为此,我在本地机器上运行了 PHP 内置服务器来运行,然后我“编译”它(组合/缩小 JS 文件,缩小 CSS 等)并将它们上传到生产服务器。

我遇到了声音效果的问题。出于某种原因,Chrome 无法识别它已经到达声音的结尾,因此会卡在“缓冲”状态。尽管有一个有效的Content-Length标题。IE 和 Firefox 似乎没有这个问题。它也会影响loop属性,并且它也无法触发ended事件。

这些问题只存在于 PHP 内置服务器上。它在生产中运行良好。我错过了什么?


编辑:这是 PHP 服务器上的示例请求/响应:

GET /bin/aud/rightwhereiwantyou.mp3 HTTP/1.1
Host: 10.0.0.110:8000
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Accept: */*
Referer: http://10.0.0.110:8000/snake.php
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Range: bytes=0-

HTTP/1.1 200 OK
Host: 10.0.0.110:8000
Connection: close
X-Powered-By: PHP/5.4.13
Content-Type: audio/mpeg
Content-Length: 1685058
4

2 回答 2

0

我的疯狂猜测是 Chrome 正在接受部分内容响应(字节范围),因为 MP3 文件可能很大,而您可能希望将其流式传输。

您是否尝试在响应中添加Accept-Ranges和标头?有关示例,请参阅Content-Range问题的答案。

于 2013-09-24T13:50:53.490 回答
0

这似乎是 Google Chrome 的一个已知错误

于 2013-10-29T14:36:46.877 回答