首页 > 解决方案 > JavaScript:恰好在 currentTime=x 停止 HTML5 视频

问题描述

我想在x几秒钟内播放 HTML5 视频。例如,从 开始t=0并在 暂停t=x,然后在 开始t=x并在 暂停t=2x。问题是我收到的更新ontimeupdate与我的时间间隔不匹配。在预定停止时间之前有一次更新,在不久之后有一次更新。我可以随时停止视频currentTime >= x,但这里的问题是这个停止点会落入新的间隔。此任务的要求是在给定间隔结束时停止。

如果不可能在给定时间准确停止,有没有办法确定该时间之前最接近的可能停止时间?那总比停下来太晚要好。我检查了currentTime(每次ontimeupdate通话之间的时间)的增量,但这些不是恒定的。我在其他地方读到浏览器会根据一些优化标准调整这个速率,所以这可能很难计算。

这个问题的背景是我想开发的一个工具。向用户显示一个视频,并且要求他x在该视频的每一秒间隔内回答一些问题。

标签: javascripthtml

解决方案


不幸的是,该timeupdate事件没有提供很多粒度。您可以阅读此答案以获取更多信息

一种替代方法是使用 手动设置间隔setInterval,并在每个间隔检查Date.now()自上次timeupdate更新以来经过的时间(也在Date.now()某处使用和保存该值)。

这将允许知道从那时起的毫秒数,尽管它需要处理诸如暂停视频和在必要时清除间隔以避免内存泄漏的情况clearTimeout


推荐阅读