是否可以预加载和缓存视频文件而不将它们添加到 DOM?

2024-04-15

我正在开发一款游戏,根据得到的结果触发 30 个小视频文件中的一个。由于视频需要在用户交互后立即播放,因此理想情况下我希望预加载视频并准备好播放。

我添加了 PreloadJS,对我需要的所有资源进行了排队。

查看检查器中的“网络”选项卡,我可以看到加载屏幕上正在传输的所有 20mb 视频。

然而,当需要播放剪辑时,它似乎是重新下载它们而不是从内存中播放它们......

我认为一旦文件被下载,它们只会保留在浏览器缓存中,一旦我尝试加载具有相同 src 的文件,它就会从下载的资源池中提取它,但这似乎并不就这样吧……

知道如何在不向页面添加 30 个视频播放器的情况下将下载的文件保留在内存中吗?

Thanks!

Ger


您可以尝试使用 Blob 和 Object-URL 将整个文件加载到内存中。这样,未附加的视频元素可以直接通过对象 URL 播放。

对于系统资源而言,这是否是一个好的策略当然是您需要自己决定的。

  • 通过 XHR 加载为blob
  • 创建对象 URL: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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以预加载和缓存视频文件而不将它们添加到 DOM? 的相关文章

  • Angular UI 模式的范围问题

    我无法理解 使用角度 UI 模式的范围 虽然这里不是很明显 但我已经正确设置了模块和所有内容 据我所知 但这些代码示例尤其是我发现错误的地方 index html 其中重要部分 div class btn group div
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • 使用本地存储在从另一个表保存的 HTML TABLE 中打印 JSON,以便我在另一个页面上打印我的表

    在我的作业中 我必须使用用户输入中的数据并将数据保存在本地存储中 我必须以水平表格式将这些数据从本地存储打印到其他页面 为此 我编写了用于用户输入并将数据保存在本地存储中的代码 div p p div
  • Vue 3 Composition API 提供/注入在单文件组件中不起作用

    我正在使用 Composition API 在 VueJS 3 中创建一个库 我实现了提供 注入 如中所述docs https v3 vuejs org guide composition api provide inject html i
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • Vaadin 12 将对象传递给 JavaScript 函数:无法对类进行编码

    Vaadin 12 Kotlin 项目 In my myPage html我有JavaScript myObject redirectToCheckout sessionId 1111 2222 所以我需要调用javaScript函数red
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green

随机推荐

  • 如何按 pandas.value_counts 对结果进行排序

    我想统计一个数据集中获得 0 5 级的学生人数 我用这个功能final grade num pd value counts final grade 得到像这样的结果 4 0 487 3 0 432 2 0 376 5 0 334 1 0 2
  • 如何在linux中用c在文件中打洞以擦除数据

    更新 这个FALLOC FL PUNCH HOLE最初不支持3 0 0 17 我想我需要修补它 我知道linux有这个hole功能 我想知道是否可以在现有文件中打一个洞 具体来说 我创建了一个名为hole test通过这些代码 18 inc
  • UIAlertController 自定义字体在 iOS 上不起作用

    UIAlertController 自定义字体不起作用 下面的代码是一个函数ShowActionSheetAsync show ActionSheet 此时我想改变字体ActionSheet 我尝试了多种方法 但效果并不好 有好的解决办法吗
  • Unity项目没有解决方案文件

    我刚刚开始学习 Unity 并且创建了一个项目 但我的项目中没有包含 sln 文件 每次我创建 C 脚本并在 Xamarin Studio 中打开它时 我都无法获得任何智能感知 unity项目中没有sln文件正常吗 如果没有 如何将解决方案
  • 获取所有输入值 - Vuejs

    我有多个input简单 VueJs 应用程序中的元素 但我没有 和 表单元素 现在我想一次获取所有输入值并发送到服务器端 laravel 进行处理 div div
  • 如何拦截所有节点request-promise http请求来修改请求选项?

    我想创建一个global请求拦截器request promise基于请求 以便我可以添加x request id所有传出请求的标头 由于该行为在所有传出请求中都很常见 因此我不想在发出请求的任何地方添加此功能 我在库文档中没有注意到此类功能
  • 引用本地计算机上的 javascript 文件

    我知道可以像这样引用网络上的第三方 JavaScript 文件 是否可以通过执行类似的操作来引用本地计算机上的 javaScript 文件 我怀疑这可能是一个禁忌 因为它可能是网站找出客户端计算机上有哪些文件的一种方式 我想这样做的原因是因
  • python 对象可以有嵌套属性吗?

    我有一个定义如下的对象 class a property def prop self print hello from object prop property def prop1 self print Hello from object
  • .gitlab-ci.yml 中的规则条件是否有 AND 选项?

    我想创建一些嵌套条件 当它是合并或合并请求并且以特定名称启动 功能 时 我需要此管道才能工作 那么 作业的 唯一 选项中是否有 AND 条件 不 那里没有 你必须使用rules https docs gitlab com ee ci yam
  • 如何创建开始菜单快捷方式

    我正在构建一个自定义安装程序 如何在开始菜单中创建可执行文件的快捷方式 这是我到目前为止所想出的 string pathToExe C Program Files x86 TestApp TestApp exe string commonS
  • mysql 使用addslashes() [重复]

    这个问题在这里已经有答案了 可能的重复 mysql real escape string 能做什么 而addslashes 不能 https stackoverflow com questions 534742 what does mysq
  • 如何在 iOS 应用程序中使用 Berkeley DB?

    我想在 iOS 应用程序中使用 Berkeley DB 但我不知道如何去做 如何将 Berkeley DB 集成到 iOS 项目中 你如何通过 Objective C 与它通信 是否有任何教程或示例可以演示如何做到这一点 首先要注意的是 该
  • 是否可以在不使用 boto3 下载 S3 文件的情况下获取其内容?

    我正在研究一个从 a 中转储文件的过程Redshift数据库 并且不希望必须在本地下载文件来处理数据 我看到了Java has a StreamingObject类可以做我想要的事情 但我还没有看到类似的东西boto3 如果你有一个mybu
  • 模块“pandas”没有属性“rolling_mean”

    我正在尝试构建 ARIMA 用于异常检测 我需要找到时间序列图的移动平均值 我尝试为此使用 pandas 0 23 import pandas as pd import numpy as np from statsmodels tsa st
  • 地理编码器错误 java.io.IOException:无法解析来自服务器的响应

    Code Geocoder geocoder new Geocoder map this Locale getDefault List
  • 为什么sonar:sonar需要先安装mvn?

    官方文档http docs sonarqube org display SONAR Analyzing with Maven http docs sonarqube org display SONAR Analyzing with Mave
  • iOS:通过自定义 UITableViewCell 上的 UITextView 选择

    我有一个带有图像和 UITextView 属性的自定义 UITableViewCell 文本视图跨越到单元格的边缘 我的问题是点击文本视图未在 didSelectRowAtIndexPath 中注册 我怎样才能让我可以 点击 我的文本视图
  • Login-AzureRmAccount 命令无法从托管 C# 应用程序运行

    我正在使用 powershell 脚本登录到 azure 为此我编写了简单的命令 Login AzureRmAccount 并在单击按钮时将该脚本调用到 C 代码中 它在本地工作正常 但是当我在服务器上托管此页面时 身份验证弹出窗口未打开
  • 如何在 PHP 中打印今天的尼泊尔日期? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想以不同的日期格式回显打印尼泊尔日历日期 请看一下下面的代码 有一个 jquery 日期选择器 http sajanmaharjan c
  • 是否可以预加载和缓存视频文件而不将它们添加到 DOM?

    我正在开发一款游戏 根据得到的结果触发 30 个小视频文件中的一个 由于视频需要在用户交互后立即播放 因此理想情况下我希望预加载视频并准备好播放 我添加了 PreloadJS 对我需要的所有资源进行了排队 查看检查器中的 网络 选项卡 我可