在Chrome中,当使用给定的<video>
创建<source>
时,视频将加载一次,然后随后创建的带有 same { {1}}使用内置视频(如预期)。
在Safari(12.0)上,即使视频已经在内存中,每次都会重新加载具有相同来源的新视频!
<video>
当上述内容在Chrome vs Safari中运行时,您可以看到第二个视频如何在Chrome上“立即”加载,但在Safari上重新加载并花费一些时间。
当新元素与上一个元素具有相同的来源时,如何使Safari重新使用内存中的视频?我的最终目标是在视频显示之前对其进行预加载(第一个视频为<source>
)。
答案 0 :(得分:1)
由于Apple不允许以任何方式支付数百欧元/美元就无法进行Safari开发,所以我无法检查,但是:
仅传递缓存的视频元素怎么办
vid.oncanplaythrough = () => {
document.removeChild(vid); // not really necessary
onFullyLoaded(vid);
};
,然后在您需要的页面其他任何地方使用该元素。
唯一的选择是从第一个元素为第二个元素创建一个内存流(因为它已完全加载,甚至可能没有必要创建流),但是这可能会使内存需求加倍,这是不希望的