16

我正在开发一个本地服务器,它将流式传输用户的音频文件,以便他们可以使用 HTML5 音频对象通过 Web 浏览器访问它们。由于这些文件在用户的计算机上,我希望文件在加载时会被完全缓冲,但对于某些大文件,歌曲会部分缓冲,然后停止,并在一段时间后恢复缓冲。

我的问题是:如何强制音频对象一次缓冲整首歌曲?我可以从 javascript 中做到这一点,我是否必须在音频对象上设置一个属性,或者我还能做些什么?

4

3 回答 3

7

我找到的解决方案是这样的:

function load() {
    a.play();
    setTimeout("a.pause()", 10);
}

播放文件并在 10 毫秒后暂停,然后浏览器将缓冲整首歌曲。

于 2012-02-10T18:31:02.647 回答
3

您可以使用该load()方法。这基本上是部队preload="auto"。但它可能不会缓冲整个事情。

我遇到的问题是移动设备上没有预加载音频(即使使用preload=auto),但这种方法有效。

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dfnReturnLink-2

另一种选择是通过 XMLHttpRequest 将数据加载为二进制 blob,并将<audio>元素的src属性设置为 blob URI。

(我个人不太喜欢播放/暂停技巧。)

于 2013-02-27T18:53:22.337 回答
1

您可以设置 preload="auto" 属性。它不能保证做任何事情,但它应该告诉用户代理尽可能多地缓冲而不用关心远程端。http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-preload

于 2011-01-21T21:38:02.253 回答