Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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 预加载一批音频文件的最明智的方法_Javascript_Html_Preload - Fatal编程技术网

Javascript 预加载一批音频文件的最明智的方法

Javascript 预加载一批音频文件的最明智的方法,javascript,html,preload,Javascript,Html,Preload,对于我的应用程序,我需要预加载许多音频文件(大约20个) 我知道我可以使用一系列带有preload属性的标记,但是加载这些标记似乎不是最有序的方法 任何能使用单个音频播放器的建议,我们将不胜感激 您可以将fetch()和Promise.all()与.map()一起使用或for..of循环和承诺构造函数请求媒体资源作为Blob或ArrayBuffer并使用MediaSource在单个节点上播放,或者简单地将节点的src设置为下一个Blob文件的表示形式将Blob传递到URL.createObjec

对于我的应用程序,我需要预加载许多音频文件(大约20个)

我知道我可以使用一系列带有
preload
属性的
标记,但是加载这些标记似乎不是最有序的方法


任何能使用单个音频播放器的建议,我们将不胜感激

您可以将
fetch()
Promise.all()
.map()一起使用
for..of
循环和
承诺
构造函数请求媒体资源作为
Blob
ArrayBuffer
并使用
MediaSource
在单个
节点上播放,或者简单地将
节点的
src
设置为下一个
Blob
文件的表示形式将
Blob
传递到
URL.createObjectURL()
以创建
Blob URL

您计划如何播放这些文件?您是否要对所有音频使用单个音频标记?它们是否都是相同的音频,但只是不同的类型?或者是20首不同的歌曲?我计划使用一个音频标签。每个音频剪辑都是不同的。它们是单个口语单词的1-2秒短语音片段。我计划使用
$('.audioPlayer').trigger('play')在jQuery中。你能再加一点解释吗?我以前从未使用过Blob、ArrayBuffer或MediaSource。@Joel See,
让mediaResources=Promise.all([“media1.ext”、“media2.ext”、].map(url=>fetch(url)。然后(response=>response.Blob())。然后(blobs=>{console.log(blobs)//将媒体资源作为Blob进行填充。)。catch(err=>console.error(err))