【问题标题】:Serving audio data from a Java servlet for an HTML5 audio control为 HTML5 音频控件提供来自 Java servlet 的音频数据
【发布时间】:2012-10-30 19:01:07
【问题描述】:

这可能是 Servlets 问题或 HTML5 问题,具体取决于解决方案的结果... :)

我有一个 (Tomcat) Servlet,它提供音频短片,然后在 HTML5 音频元素中拾取这些短片。音频正确播放,但在某些浏览器上仅播放一次(因此尝试“倒带”或重播音频不起作用)。我怀疑这是因为我的 Servlet 没有报告它支持范围请求:我注意到给定同一服务器上的静态音频文件,Apache 添加了 HTTP“范围单元”响应标头,然后重播文件然后在这样的情况下工作案例。所以我假设在我遇到问题的浏览器上,为了重播文件,浏览器会发出 HTTP Content-Range 请求,而不是缓冲整个文件或重新请求整个文件。 (至少在 Safari 上,重放从我的 Servlet 提供的音频可以正常工作:我猜是因为 Safari 缓冲了整个音频。)

所以我的问题:

  • 在 HTML 中是否有一种方法可以请求浏览器在播放时缓冲整个音频文件以允许重播,而不是服务器必须支持范围请求?

  • 如果没有,是否有人有响应来自 Servlet 的范围请求的经验?我假设这只是(a)发送“范围单元”响应代码以响应初始请求,然后(b)寻找相关的 HTTP 请求标头(“Content-Range?”)的情况(我猜这就是他们的处理方式?)在后续请求中并且只提供音频的相关部分?有什么我应该注意的陷阱吗?

【问题讨论】:

    标签: html http tomcat servlets http-content-range


    【解决方案1】:

    在 HTML 中是否有一种方法可以请求浏览器在播放时缓冲整个音频文件以允许重播,而不是服务器必须支持范围请求?

    即使有,也不是所有浏览器都支持,尤其是手机/ipad/等。

    有没有人有响应来自 Servlet 的范围请求的经验?

    implementation provided by BalusC。我已经将它移植到我的环境中,除了some minor issues,(很可能与实现无关,但与客户端细节有关)它工作得很好。

    【讨论】:

      猜你喜欢
      • 2015-09-05
      • 2012-11-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 2011-09-29
      • 2011-08-07
      相关资源
      最近更新 更多