video.js currentTime() 不正确,直到 timeupdate 事件触发

Posted

技术标签:

【中文标题】video.js currentTime() 不正确,直到 timeupdate 事件触发【英文标题】:video.js currentTime() incorrect until timeupdate event fires 【发布时间】:2013-05-07 00:07:47 【问题描述】:

我注意到一个小的不一致之处,我希望将其验证为 html5 的怪癖,或特定于 Video.js 的东西。

似乎如果您在提供新时间的同时调用 Video.js 的 currentTime() 函数,则对 currentTime() 的任何进一步调用(以获取当前时间)都不会返回正确的时间(它将返回上一个时间),直到timeupdate 事件触发。在timeupdate 事件之后,currentTime() 将返回正确的时间。

例如,假设视频尚未开始播放,但 Video.js 已加载,以及所有视频元数据等:

videoPlayer.addEvent('timeupdate', function() 
    console.log('Event callback: ' + player.currentTime); 
);
console.log('Original time: ' + player.currentTime);  
player.currentTime(100);          
console.log('New time: ' + player.currentTime);  

我期望的输出如下所示:

Original time: 0
New time: 100
Event callback: 100

但是我收到的是:

Original time: 0
New time: 0
Event callback: 100

任何见解都会很棒!

编辑:我可以在 OSX 上的 Chrome 和 Safari 中重现此内容,但在 OSX 上的 Firefox 中无法重现(全部使用 HTML5)。我也可以在 IE8 上使用 Flash 播放器和 IE9 使用 HTML5 播放器重现此内容。

【问题讨论】:

【参考方案1】:

我在其他几个 html5/flash 播放器上看到了类似的行为。

我一直认为,即使在通过currentTime(100); 搜索后,播放头也不会在下一个timeupdate 事件之前更新。

【讨论】:

通过我的实验似乎是这样。干杯!

以上是关于video.js currentTime() 不正确,直到 timeupdate 事件触发的主要内容,如果未能解决你的问题,请参考以下文章

如何在 video.js 中获取当前播放时间

求教js大神,videojs中怎么自动播放下一集

video.js使用

video.js的应用

vue使用video.js

Video.js youtube 视频