javascript - 调用audio.play()会在浏览器中预缓存HTML5音频吗?

标签 javascript html html5-audio preload

我有一堆音频剪辑需要在浏览器中重复播放。

据我了解,在调用 audio.play() 之前,audio = new Audio(src) 不会对实际源文件执行任何 IO。

是否可以保证下面的代码能够在浏览器中缓存音频并最大限度地减少延迟?

audio = new Audio(src);
audio.volume = 0;
audio.play();

除了 volume=0 在某些基于 Safari 的浏览器(例如 IOS 上的浏览​​器)中不起作用这一事实之外,这种方法还有什么缺点吗?

是否有更好的方法来缓存短音频剪辑?

最佳答案

您可以尝试设置 audiopreload 属性元素为 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/

相关文章:

javascript - jQuery - $(this) + 选择器 - .each()

javascript - HTML5 session 存储有多大?

javascript - 在 Bootstrap 中显示动态嵌套下拉列表

javascript - - 我正在尝试编写输入应为 abbbcc 且输出应为 a1b3c2 的代码

javascript - HTML5 如何为 JavaScript 游戏替换 Internet Explorer 的 WebAudio API?

javascript - 删除jquery中的空双引号

javascript - 如何验证电子邮件和最小长度验证

html - 如何让 bootstrap3 类与 Internet Explorer 8 一起工作?

javascript - 当媒体停止缓冲时如何使音频事件警报

c# - ASP.NET 声音/音频录制?