我有一堆音频剪辑需要在浏览器中重复播放。
据我了解,在调用 audio.play()
之前,audio = new Audio(src)
不会对实际源文件执行任何 IO。
是否可以保证下面的代码能够在浏览器中缓存音频并最大限度地减少延迟?
audio = new Audio(src);
audio.volume = 0;
audio.play();
除了 volume=0
在某些基于 Safari 的浏览器(例如 IOS 上的浏览器)中不起作用这一事实之外,这种方法还有什么缺点吗?
是否有更好的方法来缓存短音频剪辑?
最佳答案
您可以尝试设置 audio 的 preload
属性元素为 auto
:
audio = new Audio(src);
audio.preload = 'auto';
演示:
var aud = new Audio('http://upload.wikimedia.org/wikipedia/commons/5/5b/Ludwig_van_Beethoven_-_Symphonie_5_c-moll_-_1._Allegro_con_brio.ogg')
aud.preload = 'auto'
var bData = document.createElement('span')
document.body.appendChild(bData)
setInterval(() => bData.innerText = 'Buffered Time(in seconds): ' + (aud.buffered.length && aud.buffered.end(0)), 300)
关于javascript - 调用audio.play()会在浏览器中预缓存HTML5音频吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471675/