首页 文章

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

提问于
浏览
13

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

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

3 回答

  • 1

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

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

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

  • 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 .

    (我个人并不喜欢播放/暂停黑客 . )

  • 6

    您可以设置preload = "auto"属性 . 它应该告诉用户代理缓冲它想要的东西而不用担心远程端 . http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-preload

相关问题