【问题标题】:Streaming from HTML audio tag not buffering file从 HTML 音频标签流式传输不缓冲文件
【发布时间】:2021-04-19 23:00:33
【问题描述】:

我正在构建一个带有音频流的页面,我需要快进和快退音频。我正在使用原生的<audio> HTML 元素。

我不知道为什么音频没有缓冲,因此我无法使用 currentTime 属性。如果我使用来自另一个随机广播的另一个流 URL,它可以工作。所以我猜这与流服务器有关。

我有很多问题: 1 - 是什么导致流不缓冲? 2 - 与音频格式有关吗? AAC 还是 MP3?

这是我的音频没有缓冲:

这是另一个正确缓冲的音频(来自其他网络):

编辑:我有另一个线索。不缓冲的流是 AAC 格式,其缓冲的流是 MP3 格式。有谁知道格式是否与缓冲有关?

【问题讨论】:

标签: html audio stream streaming


【解决方案1】:

我猜服务器提交的响应与可能用于实现缓冲的磁盘缓存不兼容。

我会检查的事情:

  • 服务器接受带有字节偏移的Range 标头。
  • 服务器以Content-Range 标头响应内容的正确字节偏移。如果您有自定义实现,请确保响应不是一成不变的。请注意,HTTP 规范对偏移量和长度使用了奇怪的解释!
  • 如果请求包含标头 Range,则 HTTP 状态代码应为 206 而不是 200。
  • 响应应该包含标题ETag,只要媒体文件相同,它就应该是静态的。
  • 响应应包含具有合适值的标头Cache-Control。详情见HTTP Headers: Controlling Cache and History Mechanism
  • 你能用不同的浏览器引擎重复这个问题吗?例如,使用 Firefox、Chrome 和 Safari 进行测试——它们的行为是否相同,或者您是否正在处理某些浏览器特定的行为。

【讨论】:

  • 请注意,许多浏览器需要部分内容支持(也称为 Range 标头和 206 响应)用于媒体内容。没有规范需要这种支持,但浏览器实现有一些有趣的限制。
猜你喜欢
  • 2019-10-29
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2011-04-18
  • 2011-06-01
  • 1970-01-01
相关资源
最近更新 更多