Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用audio.play()会在浏览器中预缓存HTML5音频吗?_Javascript_Html_Html5 Audio_Preload - Fatal编程技术网

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

Javascript 调用audio.play()会在浏览器中预缓存HTML5音频吗?,javascript,html,html5-audio,preload,Javascript,Html,Html5 Audio,Preload,我有一大堆音频剪辑需要在浏览器中反复播放 据我所知,在调用audio.play()之前,执行audio=newaudio(src)不会对实际的源文件执行任何IO 是否可以保证下面的代码将在浏览器中缓存音频并将延迟降至最低 audio=新音频(src); audio.volume=0; 音频播放(); 除了volume=0在某些基于Safari的浏览器(如IOS上的浏览器)中不起作用之外,这种方法还有什么缺点吗 有没有更好的方法来缓存短音频剪辑?您可以尝试将元素的预加载属性设置为自动: audi

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

据我所知,在调用
audio.play()
之前,执行
audio=newaudio(src)
不会对实际的源文件执行任何IO

是否可以保证下面的代码将在浏览器中缓存音频并将延迟降至最低

audio=新音频(src);
audio.volume=0;
音频播放();
除了
volume=0
在某些基于Safari的浏览器(如IOS上的浏览器)中不起作用之外,这种方法还有什么缺点吗


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

您可以尝试将元素的
预加载
属性设置为
自动

audio = new Audio(src);
audio.preload = 'auto';
演示:
var aud=新音频('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(以秒为单位):'+(aud.Buffered.length&&aud.Buffered.end(0)),300
噢,是的,缺点是额外的HTTP调用和额外的带宽使用。浏览器不必遵守preload属性,事实上,我认为大多数移动浏览器都不会预加载它。@ccpizza,我不是用标签来做音频的,标签是用来显示缓冲的进度,可以吗ignored@mido:额外的HTTP调用是如何进行的?我假设如果浏览器在设置预加载时而不是在播放时获取音频,那么在调用
play()
时不会发生额外的请求,因此区别只在于发出请求的时间,而不是请求的数量,不?@ccpizza I说额外是因为,如果用户不需要您下载的所有音频怎么办
audio.play();audio.pause()可能不会预加载整个媒体,但可能足以减少延迟。