用于预加载整个流的 Html 音频标签

Posted

技术标签:

【中文标题】用于预加载整个流的 Html 音频标签【英文标题】:Html audio tag to preload entire stream 【发布时间】:2014-03-01 16:32:17 【问题描述】:

有没有办法在 html 音频标签中预加载整个 mp3。

这个问题困扰我很久了。我有使用 html 音频标签的 soundcloud 播放器,我设置了音频源,音频开始播放并开始缓冲。

问题是,soundcloud 音频源受到短寿命令牌的保护,当音频预缓冲更多数据时,缓冲停止,当音频想继续读取流时,它从 soundcloud 获得 404 并且无法恢复缓冲。

我注意到如果我暂停音频,整个音轨将立即加载,但这不是我需要的解决方案。

【问题讨论】:

嘿,你能提供一个通过 jsbin、jsfiddle 或类似的例子吗?你是什​​么意思“缓冲停止”?你如何做到这一点?谢谢 这是我的网络应用程序和长混音的直接链接:mycloudplayers.com/?play=137600832 这并不是一直在发生,但它经常发生(即使在短音轨上),你会看到缓冲指示器,如果音频预缓冲足够的数据,它将停止,直到当前位置接近缓冲。 @gryzzly 你来自 soundcloud 开发者吗?我希望 soundcloud 的人对此做出回应,我认为没有闪存(或其他插件)就无法预缓冲整个流。 为了帮助您,我需要一个代码示例,仅简化为音频对象和 soundcloud 源而不是缓冲,您的站点可能包含任何数量的其他脚本,这些脚本可能会破坏缓冲。它还可以帮助您找出问题,干杯 这里是一个示例代码:jsfiddle.net/c3XnG/1 谢谢!停止缓冲时的更多详细信息,哪些浏览器?它对我来说缓冲得很好 【参考方案1】:

根据http://www.w3schools.com/tags/att_audio_preload.asp,你应该设置preload="auto"

【讨论】:

【参考方案2】:

不同的浏览器表现不同。 Chrome 在暂停时缓冲整个音轨(无论出于何种原因)。 preload=auto 做的不多,但从设置 url 时开始填充缓冲区,而不是在播放事件时。 闪存不一样。无论如何它都会加载整个轨道。但它不能寻找无缓冲的位置,因为它不能做字节范围请求。它还浪费了您和我们的带宽。

【讨论】:

如果您想控制缓冲过程,请查看媒体源扩展。例如,您可以在多个线程中逐段下载整个媒体,如果需要,可以将其存储在本地。

以上是关于用于预加载整个流的 Html 音频标签的主要内容,如果未能解决你的问题,请参考以下文章

在移动设备上预加载音频

预加载音频文件

javascript中的完整预加载音频

js图片预加载

预加载音频文件/事件?

通过 XMLHttpRequest 预加载音频文件