我正在开发一个使用HTML5音频元素的基本音频播放器。所有提供的文件都是.ogg通过API从另一个系统作为二进制字符串打印出来,并由一个简单的PHP处理程序打印出来(包括一些基本的安全检查),我真的无能为力。
然而,虽然一切都在Firefox上运行良好,但Chrome在搜索,跳过或重放方面存在一些问题(简单地说:它无法完成)。从audio元素获取音频持续时间会返回Infinity,而currentTime返回正确的值时,无法对其进行操作。
我开始摆弄标题和响应代码,似乎没有任何工作正常。对部分内容使用响应代码206或在标头中声明Accept-Ranges会导致音频元素被禁用,就像源文件不存在时一样。
搜索正确的标题并没有产生太多结果,因为它总是关于部分内容和X-Content-Duration(由于VBR而计算的PITA),这在Chrome上没有任何作用。
以下是在FF上工作得很好的相关标题。我是否在某些方面犯了重大错误,或者Chrome存在一些问题?
HTTP/1.1 200 OK (changing this to 206 makes the file unplayable in Chrome)
Cache-Control: public, no-store
Content-Disposition: attachment; filename="redacted.ogg"
Content-Length: 123456
X-Content-Duration: 12 (this does nothing on Chrome, works on FF)
Content-Range: bytes 0-123455/123456
Accept-Ranges: bytes (...as does including this)
Content-Transfer-Encoding: binary
Content-Type: audio/ogg
Expires: 0
Pragma: public
编辑: Opera上的某种行为,可能在所有Webkit浏览器上。在fread
/ file_get_contents
类型的情况下也不起作用。
答案 0 :(得分:0)
希望这也有助于其他人。