【问题标题】:http headers to send file to html5 <audio>将文件发送到 html5 <audio> 的 http 标头
【发布时间】:2010-12-05 20:56:36
【问题描述】:

我想用html5的新标签播放wav文件(目前只有FF支持)

https://developer.mozilla.org/En/HTML/Element/Audio

我正在使用 php 的 readfile 命令从硬盘中取出 wav 文件,并将其写入 http 响应。

但它不起作用。 Firefox 中的音频小部件只是不断运行加载动画。

标签似乎很好,因为我可以在它的 src/source 中放置一个不同的 url,它工作正常。我可以使用标签下载文件并使用 Quicktime 播放。

所以我想可能是它的一个/所有内容标题。

使用 FF 扩展 httpfox 我可以看到这些响应标头从服务器到达:

(Status-Line)   HTTP/1.1 200 OK
Date    Mon, 12 Oct 2009 03:04:33 GMT
Server  securesauce
Cache-Control   private
Expires Mon, 26 Jul 1997 05:00:00 GMT
Pragma  private
Vary    Accept-Encoding
Content-Encoding    gzip
Content-Length  8217
Keep-Alive  timeout=15, max=100
Connection  Keep-Alive
Content-Type    audio/x-wav

所以一切看起来都符合我的预期。我在脚本中明确设置的唯一标头(其他标头在应用程序的其他位置设置)是:

Cache-Control   private
Pragma  private
Content-Type    audio/x-wav

当我尝试不同的 wav 文件(互联网上随机一个)时,httpfox 没有列出任何响应标头。

因为它是一个发送内容的 php 文件,所以我不能只发送任何标题,因为我至少必须发送内容类型。

有什么想法吗?

来源摘录:

header('Cache-Control: private');
header('Pragma: private');
header("Content-Type: $contentType");
readfile($filepath);
exit;

【问题讨论】:

    标签: php audio html wav http-headers


    【解决方案1】:

    你错过了X-Content-Duration。客户端在播放过程中需要准确寻找,并且一些客户端拒绝媒体内容,除非包括持续时间。还包括Content-Duration,它正在慢慢取代X-Content-Duration

    这里有更多信息:Configuring web servers for HTML5 Ogg video and audio

    另外,我会避免在您的输出中使用 gzip 或加密。

    【讨论】:

      【解决方案2】:

      我在使用 php 发送 ogg 音频文件时遇到了同样的问题。玩标题没有帮助。

      然后我从 firefox 3.5.2 更新到 3.5.4 - 解决了问题。

      【讨论】:

        【解决方案3】:

        Mozilla 支持哪些格式和 MIME 类型记录在 their wiki 上。看起来 MIME 类型不是你的问题,但很可能这个 WAVE 文件没有使用 Firefox 支持的纯 PCM 音频。 WAVE 实际上可以包含其他格式,如 ADPCM、MP3 等。 QuickTime 可能支持这些,但不能保证它会在 HTML5 浏览器中播放。可以肯定的是,请尝试在音频编辑器中打开文件,然后再次将其另存为 WAVE PCM 文件。

        【讨论】:

        • 啊,就是这样! wav文件由Asterisk在GSM610中录制。
        • 在我的 django 项目中研究了一个小时的标题后,这让我走上了正确的道路!向您致敬,先生。
        【解决方案4】:

        您是否在浏览器中直接尝试过音频文件的 url?如果它包含会使您的标头过时的错误或警告。并尝试从浏览器打开音频文件,看看是否正确。

        【讨论】:

        • 谢谢,是的,试过了,文件使用quicktime正常播放。 (直接加载它是我通过 httpfox 获取标题的方式。)我还可以保存文件,然后使用 Windows Media Player 播放文件。
        猜你喜欢
        • 2016-06-06
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        • 2012-03-07
        • 1970-01-01
        • 2012-05-13
        • 2015-12-13
        • 1970-01-01
        相关资源
        最近更新 更多