我试图找出如何将多个音频文件预加载到浏览器中,并且在失去网络连接后仍然可以使用它们(当然,在预加载文件时取得了最初的成功之后)。
到目前为止,它是我最喜欢的方法,而且易于阅读。下面的代码基本上是从那里开始的。但是因为它与播放器中的新Audio()然后是audio.src一起使用,所以即使所有预加载了播放器,并且仍然收到以下错误消息,播放器仍然尝试与src检查:
GET http://xxxxx.com/sound.mp3 net :: ERR_INTERNET_DISCONNECTED
未捕获(按承诺)DOMException:由于找不到受支持的源而无法加载。
因为播放器(ID为“ player”的html音频)试图播放如下声音:
function play(index) {
player.src = audioFiles[index];
player.play();
}
它使用src,在这种情况下是网络路径。和预加载器功能一样:
function preloadAudio(url)
{
var audio = new Audio();
// once this file loads, it will call loadedAudio()
// the file will be kept by the browser as cache
audio.addEventListener('canplaythrough', loadedAudio, false);
audio.src = url;
}
我很想让用户立即预加载所有声音文件,并让他们可以在播放声音的同时退出网络连接。
我可以在预加载到播放器随后引用的某种类型的对象的同时加载文件吗?还有另一种方法可以做到这一点吗?
我认为只要您audio.src
在连接断开后不进行更改,就可以了。因此,您要预加载的每个文件都需要一个音频元素。也许:
var audioPlayers = audioFiles.map( file => {
var audio = new Audio();
audio.src = file;
return audio;
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句