是否可以在不将其添加到DOM的情况下预加载和缓存视频文件
Is it possible to preload and cache video files without adding them to the DOM?
我正在开发一款游戏,该游戏涉及根据您获得的结果触发 30 个小视频文件中的一个。由于视频需要在用户交互后立即播放,理想情况下,我希望预加载视频并准备就绪。
我添加了PreloadJS,将我需要的所有资产排队。
查看检查器中的"网络"选项卡,我可以在加载屏幕上看到所有20mb的视频传输。
但是,当需要播放剪辑时,它似乎是重新下载它们而不是从内存中播放它们......
我以为一旦文件被下载,它们就会留在浏览器缓存中,一旦我尝试使用相同的 src 加载文件,它就会从下载的资产池中提取它,但事实似乎并非如此......
知道如何在不向页面添加 30 个视频播放器的情况下将下载的文件保存在内存中吗?
谢谢!
德国
可以尝试使用 Blob 和对象 URL 将整个文件加载到内存中。这样,非附加的视频元素可以直接通过对象 URL 播放。
如果这是关于系统资源的好策略,当然是您需要自己决定的事情。
- 通过 XHR 加载为
blob
- 创建对象网址:
var url = (URL || webkitURL).createObjectURL(blob);
现在位于内存中,因此当您需要播放它时,将其设置为视频元素的源,您应该准备好了:
var video = document.createElement("video");
video.oncanplay = ...; // attach to DOM, invoke play() etc.
video.src = url; // set the object URL
对象 URL 在页面的生命周期中保留在内存中。如果需要,您可以通过以下方式手动撤销它:
(URL || webkitURL).revokeObjectURL(url);
相关文章:
- 在不使用按钮的情况下加载代码
- 如何在没有iFrame的情况下加载Monocle Web电子书/ePub阅读器
- 如何在不重新加载当前页面的情况下加载URL
- 确定是否在不使用任何全局变量的情况下加载了窗口
- 在没有JQuery的情况下加载HTML主体之后调用JavaScript脚本的最佳方式
- 如何在不闪烁的情况下加载Iframe
- 如何在没有查询字符串和参数的情况下加载jQuery
- 确保数据在没有单独请求的情况下加载到视图中
- 如何在不插入 dom 的情况下加载 mbox 内容
- D3 JS - 在没有 HTTP Get 的情况下加载 JSON
- 在没有 css 和 js 的情况下加载页面后.php网址上添加斜杠
- Webpack - 在不创建别名的情况下加载模块
- 如何在不出现异步错误的情况下加载 Gist 代码
- 操作方法确保在不使用 WebFont 加载器的情况下加载@font面
- 在没有 AJAX 的情况下加载 JSON 数据
- 在没有DNS调用的情况下加载Javascript和CSS文件
- 如何在没有本地服务器的情况下加载本地 JSON 以创建 d3 图表
- 在不更改 URL 的情况下加载页面并保持相对路径正常工作
- 如何在没有标记内容的情况下加载谷歌地图
- 如何组织并确保在不将所有脚本和css放在每个页面上的情况下加载它们