如何强制HTML5音频元素缓冲整首歌曲?

Geo*_*rge 14 javascript audio html5 html5-audio

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

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

Ahi*_*una 7

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

function load() {
    a.play();
    setTimeout("a.pause()", 10);
}
Run Code Online (Sandbox Code Playgroud)

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

  • @DrJokepu实际上,这不起作用,因为你失去了函数的上下文.更好:`setTimeout(a.pause.bind(a),10)` (12认同)
  • setTimeout(a.pause,10)是更好的业力 (7认同)

joe*_*ker 1

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