Youtube Js Api - seekTo(time) 需要很长时间才能更新 player.getCurrentTime()

Youtube Js Api - seekTo(time) takes a long to update the player.getCurrentTime()

当通过 YouTube JavaScript API 寻找时间时,player.getCurrentTime() 需要一些时间到 return 正确的时间。相反,有一段时间,return是旧时光。


示例:

->当前视频时长:10s

-> player.getCurrentTime() -> returns 10s (正确)

-> player.seekTo(2s)

-> player.getCurrentTime() -> returns 10s 而不是 2s(不正确)

-> 等待 2 秒...

-> player.getCurrentTime() -> returns 12s(正确)


如何修复?

我也遇到了同样的问题。我不确定如何修复它,确切地说, 但我正在通过使用

之类的东西来解决它
  intervalId = setInterval( () => {
    var ytTime = ytplayer.getCurrentTime()
    [... do stuff here...]
  }, 500)

...这不是最佳选择,但它可以满足我的需要。

我在跟踪 'Youtube API Service' 问题的 google 问题跟踪器上提出了一个问题,这里: https://issuetracker.google.com/issues/142517061

但如果我不得不猜测,这将被标记为按设计工作。对 seekTo 的调用需要做一些工作来执行搜索,并且该工作是 可能 异步的,因此当我们在该工作完成之前调用 getCurrentTime 时,我们将获得一个时间这似乎无效,但实际上任务还没有完成。

请注意,在调用 seekTo 之后,如果您执行了类似

的操作
setTimeout( () => { console.log(ytplayer.getCurrentTime()) }, 2000 )

那么您可能会看到正确的时间。