Video 从特定点停止并播放视频

Video 从特定点停止并播放视频,video,html5-video,Video,Html5 Video,假设我有一个视频,我想在某个地方停下来,在这里留言 例如,如果时间是4.282,则我希望此时正好显示消息4.282: $("video").on("timeupdate", function(event){ if(video.currentTime == 4.282) { showMessage(); } ); Howewervideo.currentTime很少更新时间,因为它无法捕捉时间。例如,console.log(video.currentTime)将显示: 0.15 0.66

假设我有一个视频,我想在某个地方停下来,在这里留言

例如,如果时间是
4.282
,则我希望此时正好显示消息
4.282

$("video").on("timeupdate",
    function(event){ if(video.currentTime == 4.282) { showMessage(); }
);
Howewer
video.currentTime
很少更新时间,因为它无法捕捉时间。例如,console.log(video.currentTime)将显示:

0.15
0.66
1.12
etc
我也尝试过设置间隔,但仍然不够精确。

我成功了

首先,您必须设置视频播放的时间间隔

    setInterval( function() {
        var tim = video.currentTime.toFixed(2);
        var timi = tim+0.01;
        if(tim == messageTime || timi == messageTime ) { showMessage(); }
        return tim;
    }, 20);
这将为您提供更精确的视频时间更新。你会得到这样的结果:

1.02
1.04
1.06
etc.
因此,现在将更容易获得结果。Hovewer有时会播放不同时间的视频,可能会变成:

1.01
1.03
因此,别忘了添加tim变量+0.01,这将保证捕获所有消息。

我成功了

首先,您必须设置视频播放的时间间隔

    setInterval( function() {
        var tim = video.currentTime.toFixed(2);
        var timi = tim+0.01;
        if(tim == messageTime || timi == messageTime ) { showMessage(); }
        return tim;
    }, 20);
这将为您提供更精确的视频时间更新。你会得到这样的结果:

1.02
1.04
1.06
etc.
因此,现在将更容易获得结果。Hovewer有时会播放不同时间的视频,可能会变成:

1.01
1.03

因此,不要忘记添加tim变量+0.01,这将保证捕获所有消息。

您将无法获得如此高的精度。您可以尝试设置超时(func,0)performance.now()检查以获得比Date更好的时间戳,但即使这样,您也无法确切知道视频何时开始,并且某些浏览器不支持
performance
对象。。。另外,
requestAnimationFrame
将在每一帧上触发,因此您可以使用它并检查是否距离请求的时间足够近,您至少会处于良好的帧上。另外,我真的不明白你为什么需要这样的精确度,你能说得更清楚吗?用户将能够在视频上标记和绘制东西。因此,节省精确的时间是非常重要的,否则图形可能会出现在错误的场景中。您将无法获得如此高的精度。您可以尝试设置超时(func,0)performance.now()检查以获得比Date更好的时间戳,但即使这样,您也无法确切知道视频何时开始,并且某些浏览器不支持
performance
对象。。。另外,
requestAnimationFrame
将在每一帧上触发,因此您可以使用它并检查是否距离请求的时间足够近,您至少会处于良好的帧上。另外,我真的不明白你为什么需要这样的精确度,你能说得更清楚吗?用户将能够在视频上标记和绘制东西。因此,节省精确的时间非常重要,否则图形可能出现在错误的场景中