Safari 桌面上的音频延迟

Audio delay on Safari Desktop

我有一个包含多个 <audio> 标签的页面。每当我在 Chrome(桌面,macOS)中播放音频时,它会立即开始,而在 Safari(13.1,macOS)中它会等待一段时间才能开始播放(奇怪的是,如果它们是几个,它会等待更长时间页面上的音频标签)。

我认为问题出在未设置“preload”属性,因此我根据文档将其设置为“auto”]1,但它并没有改变任何事情。

我不想使用第 3 方库以保持尽可能简单。

如何消除这种延迟?为什么页面上的音频标签越多越长?

我无法完全消除延迟,但我通过将 preload 设置为 ="metadata" 使它变得更好。出于某种原因,它使文件加载速度更快。

Chrome 其实在这方面很聪明。当预加载设置为自动时,它会在页面加载时缓存大约 1mb 的每个音频文件,因此当您按下“播放”按钮时它可以更快地播放。

我也开始监听 audio 元素的 onwaiting 事件,所以我可以显示预加载器来改善体验。

由于 Safari 在文件实际准备好播放时会更快地触发 oncanplayonplaying,因此我不只是隐藏此事件的预加载器,而是在 1.5 秒超时后使其平滑出。

这对我来说已经足够了,因为延迟从 30 秒(页面上有 10 个音频元素)减少到仅 1.5 秒。