19

我目前正在使用 HTML5 音频播放器通过(移动)浏览器提供音频流(24/7 无线电流)。加载流并播放它工作正常。

主要问题是 HTML5<audio>标记即使在不活动时也会继续下载(缓冲)内容。对于移动用户来说,这可能是一个主要问题,因为他们中的大多数人为数据使用付费。到目前为止,我还没有找到一个体面的解决方案,可以跨浏览器来防止这种情况。

到目前为止我尝试过:

  1. 按下暂停时卸载源。< 这不适用于跨浏览器
  2. 删除音频播放器元素并加载一个新元素。这可行,但老实说,这是执行极其简单的任务的一种非常hacky 的方式。

我只是想知道在整个问题中是否有我忽略的东西,因为我确信我不是唯一一个遇到这个问题的人。

4

3 回答 3

14

<audio>元素包括一个preload属性。这可以设置为“无”或“元数据”,以防止音频预加载。

来源:https ://developer.mozilla.org/en/docs/Web/HTML/Element/audio

于 2016-04-22T11:20:52.343 回答
2

我为上述问题找到了一个可行的解决方案。可以在此处找到详细说明:https ://stackoverflow.com/a/13302599/1580615

于 2012-11-09T05:39:54.673 回答
2

您可以执行以下操作来停止缓冲负载而不会出现错误:

var blob = new Blob([], {type: "audio/mp3"});
var url = URL.createObjectURL(blob);
audio.src = _url;

或者,缩短:

audio.src = URL.createObjectURL(new Blob([], {type:"audio/mp3"});

现在您没有加载“”,这是音频标签尝试加载的错误 url。相反,您正在加载一个由 Blob 制成的实际 url,该 Blob 不包含要播放的音频数据。

于 2016-02-25T04:35:32.013 回答