在准确的时间停止视频
Stop video at exact time
我正在尝试制作一个小的视频编辑网络工具来制作完美的视频循环,并且需要在准确的时间停止视频。
对 HTML5 视频执行此操作的推荐方法是使用时间更新事件
video.addEventListener("timeupdate", function() {
if (video.currentTime >= endtime)
video.pause();
}, false);
然而,问题是这些粒度与我在大多数浏览器中看到的相比只有 100 到 300 毫秒左右,这使得无法在准确的时间停止并获得良好的视频循环。
因此,当我尝试在 1.35 秒停止时,它可能只会在 1.51 秒或下一个事件决定出现时停止。
停止 HTML5 视频的替代方法是添加 #t=,endtime
或按时间间隔检查 .currentTime
,但两者都绑定到相同的精确粒度。
如何在准确的时间停止?
不必使用 HTML5 视频标签,该工具仅供我个人使用,所以 hacky 解决方案或需要 Flash 或其他插件的东西完全没问题。
我认为它最多只能精确到 1 秒,因此使用 timeupdate 事件很难像您想要的那样在毫秒范围内停止视频,正如您注意到的那样,停止它大约有 250 毫秒的延迟。
您可以尝试以一定速率使用 setInterval 轮询 currentTime,例如每 50 毫秒,并在超过您的停止时间后暂停视频。
这可能会满足您的需求(而不是依赖于 timeupdate 事件),但可能会给您的浏览器增加额外的负载。
我正在尝试制作一个小的视频编辑网络工具来制作完美的视频循环,并且需要在准确的时间停止视频。
对 HTML5 视频执行此操作的推荐方法是使用时间更新事件
video.addEventListener("timeupdate", function() {
if (video.currentTime >= endtime)
video.pause();
}, false);
然而,问题是这些粒度与我在大多数浏览器中看到的相比只有 100 到 300 毫秒左右,这使得无法在准确的时间停止并获得良好的视频循环。
因此,当我尝试在 1.35 秒停止时,它可能只会在 1.51 秒或下一个事件决定出现时停止。
停止 HTML5 视频的替代方法是添加 #t=,endtime
或按时间间隔检查 .currentTime
,但两者都绑定到相同的精确粒度。
如何在准确的时间停止?
不必使用 HTML5 视频标签,该工具仅供我个人使用,所以 hacky 解决方案或需要 Flash 或其他插件的东西完全没问题。
我认为它最多只能精确到 1 秒,因此使用 timeupdate 事件很难像您想要的那样在毫秒范围内停止视频,正如您注意到的那样,停止它大约有 250 毫秒的延迟。
您可以尝试以一定速率使用 setInterval 轮询 currentTime,例如每 50 毫秒,并在超过您的停止时间后暂停视频。
这可能会满足您的需求(而不是依赖于 timeupdate 事件),但可能会给您的浏览器增加额外的负载。