我正在开发一个本地服务器,它将流式传输用户的音频文件,以便他们可以使用HTML5音频对象通过Web浏览器访问它们 . 由于这些文件位于用户的计算机上,我希望文件在加载时可以完全缓冲,但对于某些大文件,歌曲会缓慢部分缓存,然后停止,并在稍后恢复缓冲 .
我的问题是:如何强制音频对象一次缓冲整首歌曲?我可以从javascript执行此操作,是否必须在音频对象上设置属性,或者我还能做什么?
我找到的解决方案是这样的:
function load() { a.play(); setTimeout("a.pause()", 10); }
播放文件并在10ms后暂停,然后浏览器将缓冲整首歌曲 .
您可以使用 load() 方法 . 这基本上迫使 preload="auto" . 但它可能不会缓冲整个事情 .
load()
preload="auto"
我遇到的问题是音频没有预先加载到移动设备上(即使使用 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 .
<audio>
src
(我个人并不喜欢播放/暂停黑客 . )
您可以设置preload = "auto"属性 . 它应该告诉用户代理缓冲它想要的东西而不用担心远程端 . http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-preload
3 回答
我找到的解决方案是这样的:
播放文件并在10ms后暂停,然后浏览器将缓冲整首歌曲 .
您可以使用
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 .(我个人并不喜欢播放/暂停黑客 . )
您可以设置preload = "auto"属性 . 它应该告诉用户代理缓冲它想要的东西而不用担心远程端 . http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-preload