是否可以预加载和缓存视频文件而不将它们添加到 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? 的相关文章

  • 获取express.js中间件请求中“#”后的url

    我需要获取服务器中间件上的 url 使用express js 我用req url但是当 url 开头时 some urlreq url 返回 与req path 有没有办法获取url之后 在express js中 No URL 中以 符号永
  • 为什么我的反应路由器链接将我带到页面中间?

    我的网站上有很多链接 但只有一个可以执行此操作 它没有将我带到导航栏的顶部 而是转到内容的中间 知道为什么会这样吗 这是一个页面 其中有一个 map经历一些JSON 这是渲染div页面下方的文本元素 如果重要的话 这是一些可能相关的代码 路
  • axios 请求中未发送正文数据

    我试图通过 axios 请求将数据发送到我的后端脚本 但正文看起来是空的 这是前端发送的请求 axios request method GET url http localhost 4444 next api headers Authori
  • Angular 4 过滤器搜索自定义管道

    所以我试图构建一个自定义管道来在 ngFor 循环中执行多个值的搜索过滤器 我花了几个小时寻找一个好的工作示例 其中大多数都是基于以前的版本 并且似乎不起作用 所以我正在构建管道并使用控制台为我提供值 但是 我似乎无法显示输入文本 以下是我
  • Angular UI select:从远程服务获取数据

    我正在使用角度用户界面选择 https github com angular ui ui select https github com angular ui ui select 我查看了演示的可用位置这个笨蛋 http plnkr co
  • 类型错误:类扩展值未定义不是函数或 null

    尝试创建这些实体时出现以下错误 TypeError Class extends value undefined is not a function or null 我假设这与循环依赖有关 但是在使用表继承和一对多关系时应该如何避免这种情况
  • 如果没有“new”,则无法调用类构造函数

    感谢这个问题已经被问过几次了 但是我遇到的几乎所有情况都是有人试图扩展非本地类的情况 我的情况有所不同 我有一个非常简单的基类 名为CObject如下 export class CObject extends BaseObject cons
  • 如何让Gmail像加载进度条一样

    我想在页面的中心和顶部创建一个像 Gmail 一样的加载进度条 并适用于所有浏览器 这是基本代码
  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小
  • API 使用令牌向 odoo 进行身份验证

    我想使用令牌从 Express 应用程序向 Odoo 进行身份验证 我在用odoo xmlrpc https www npmjs com package odoo xmlrpc连接 Odoo 的节点模块 我的快递应用程序 Odoo 要求 A
  • JS 保留以零结尾的小数[重复]

    这个问题在这里已经有答案了 在JavaScript中 是否可以 锁定 十进制数 以保留以零结尾的 浮点数 例如 我有 2 个不同的数字 如下所示 伪代码 let a 1 0 let b 1 00 a b true should be fal
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • 全局传递 xhr onload 函数的值

    在我正在创建的应用程序中 我有以下 XMLHttpRequest 并且我正在尝试传递结果data在 的里面xhr onload 到在同一父函数中创建的数组中 var url http api soundcloud com resolve j
  • 为什么在 JavaScript 中 if([]) 被验证而 [] == false ?

    if false alert empty array is false alert alert 0 if alert empty array is true 他们都会运行警报 Demo http jsfiddle net roine ZFD
  • 如果一个对象结构与另一个对象结构不匹配/不匹配,如何引发异常

    我将读取格式正确的用户输入对象 也就是说 输入对象现在可以具有接口中未定义的任何键或子结构 如果用户提供了无效的对象 我如何抛出异常 预定义接口 export interface InputStructureInterface tableN
  • 如何使用 window.onerror 捕获所有 javascript 错误? (包括道场)

    这个问题是后续问题javascript 如何在弹出警报中显示脚本错误 https stackoverflow com questions 2604976 javascript how to display script errors in
  • 类中可以有生成器 getter 吗?

    我的意思是吸气剂是发电机 我相信这一切都是 ES6 也许像这样 class a get count let i 10 while i yield i let b new a for const i of b count console lo
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • PDF 在 Safari 中隐藏 Jquery Modal

    这是与我有关的事情this https stackoverflow com questions 24052681 pdf hide jquery modal in ie问题 在 IE 中 我在对话框中使用 iframe 解决了问题 所以它工
  • MongoDB:javascript执行失败:无法在 src/mongo/shell/collection.js 保存 DBQuery 对象

    在 MongoDb 中 当我尝试修改集合中的现有文档时 它会生成以下异常 javascript execution failed can t save a DBQuery object at src mongo shell collecti

随机推荐

  • 如何按 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 对我需要的所有资源进行了排队 查看检查器中的 网络 选项卡 我可