Javascript Webaudio:createMediaElementSource比XMLHttpRequest快

Javascript Webaudio:createMediaElementSource比XMLHttpRequest快,javascript,html5-audio,web-audio-api,Javascript,Html5 Audio,Web Audio Api,每当我使用XMLHttpRequest播放音乐时,我必须至少等待10秒左右,直到听到声音 短音瞬间加载 较大的声音(3分钟)至少需要10秒才能播放 哪些因素会影响加载时间?我是说我在本地主机上做这件事。声音应该立即播放,因为我没有下载任何东西。显然,对于大小声音,脚本运行的时间是相等的 我确实注意到,使用createMediaElementSource可以大大加快播放速度,并立即播放声音 发生了什么事?有问题的音频文件有多大?如果它很大,您可能为解码音频数据付出了高昂的代价 使用create

每当我使用XMLHttpRequest播放音乐时,我必须至少等待10秒左右,直到听到声音

  • 短音瞬间加载
  • 较大的声音(3分钟)至少需要10秒才能播放
哪些因素会影响加载时间?我是说我在本地主机上做这件事。声音应该立即播放,因为我没有下载任何东西。显然,对于大小声音,脚本运行的时间是相等的

我确实注意到,使用createMediaElementSource可以大大加快播放速度,并立即播放声音


发生了什么事?

有问题的音频文件有多大?如果它很大,您可能为
解码音频数据
付出了高昂的代价

使用
createMediaElementSource()
,您可以对音频文件进行分块解码。一旦它认为有足够的缓冲区可以播放到最后,它就会开始播放


但是对于
decodeAudioData
,您必须等到整个文件被解码。

@ZebRawnsley它有点长,这就是我没有发布它的原因。不管怎样,我希望这有助于说明问题。@ZebRawnsley太难了?你认为可以解决吗?一个4兆字节的MP3文件。我还尝试了更小的文件。似乎文件管理器越小,播放越快。难道没有办法解码音频数据,让我开始听到块吗?与createMediaElementSource类似?我的意思是,我只想使用createMediaElementSource,但safari似乎不支持它。你可以将音频分解成许多较小的文件。比如,把它分成4个独立的1MB音频文件,然后依次加载。然后可以在加载第一个后开始播放,在播放的同时,加载其他的。您还可以查看Safari中的
createMediaElementSource
问题。它应该可以工作。但是你看到caniuse网站了吗?如果你去“已知问题”,它会说safari不支持它