javascript - JavaScript:恰好在 currentTime=x 停止 HTML5 视频
问题描述
我想在x
几秒钟内播放 HTML5 视频。例如,从 开始t=0
并在 暂停t=x
,然后在 开始t=x
并在 暂停t=2x
。问题是我收到的更新ontimeupdate
与我的时间间隔不匹配。在预定停止时间之前有一次更新,在不久之后有一次更新。我可以随时停止视频currentTime >= x
,但这里的问题是这个停止点会落入新的间隔。此任务的要求是在给定间隔结束时停止。
如果不可能在给定时间准确停止,有没有办法确定该时间之前最接近的可能停止时间?那总比停下来太晚要好。我检查了currentTime
(每次ontimeupdate
通话之间的时间)的增量,但这些不是恒定的。我在其他地方读到浏览器会根据一些优化标准调整这个速率,所以这可能很难计算。
这个问题的背景是我想开发的一个工具。向用户显示一个视频,并且要求他x
在该视频的每一秒间隔内回答一些问题。
解决方案
不幸的是,该timeupdate
事件没有提供很多粒度。您可以阅读此答案以获取更多信息。
一种替代方法是使用 手动设置间隔setInterval
,并在每个间隔检查Date.now()
自上次timeupdate
更新以来经过的时间(也在Date.now()
某处使用和保存该值)。
这将允许知道从那时起的毫秒数,尽管它需要处理诸如暂停视频和在必要时清除间隔以避免内存泄漏的情况clearTimeout
。
推荐阅读
- node.js - 使用 Nodejs 从 s3 获取对象的最简单方法是什么?
- python - 在 Tensorflow 中保存/恢复不同变量范围下的权重
- azure - 对象参数内的 ARM 模板密钥库访问策略
- ios - 将 MPSCNNFullyConnected 迁移到 MPSCNNConvolutionDataSource
- javascript - Mongoose 在创建时自动填充
- typescript - 类型的类型是什么?
- c# - Rest Sharp 使用返回原始文件的 API
- php - POST方法在同一页面PHP上不起作用
- node.js - 如何将网络套接字存储到数据库以保持节点 js 应用程序无状态?
- c# - 如何在不安装整个 SDK 的情况下在 Docker 中运行 .net 单元测试?