Youtube播放器JS API seekTo功能不起作用

时间:2012-03-31 12:28:30

标签: javascript youtube-javascript-api

我正在尝试通过JS API使用Youtube chromeless播放器,我遇到了seekto()函数的问题。

问题是有时候(我无法判断问题何时出现),向后调用未加载的视频中的某个点的seekTo()函数不会返回而是保持在当前时间。 / p>

这就是我所做的(想象视频长度为240秒):

  1. 我开始播放视频了 - > loadVideoById()。
  2. 我继续前进(让我们说)视频中间 - > seekTo(120)
  3. 视频正确跳转到我问的位置。
  4. 我尝试向后移动到视频的25%时间 - > seekTo(60)
  5. 有时视频会跳回到60,但更多时候只会回到120.
  6. 那么,其他人是否有这个问题?

4 个答案:

答案 0 :(得分:4)

发布一些代码将有助于我们为您提供帮助,但您尝试了player.seekTo(60, true); - 第二个参数很重要 - 将其设置为true将使播放器向服务器发送新请求以获取视频。

答案 1 :(得分:0)

我遇到了你所描述的同样问题。我发现,如果你查询API的视频持续时间,然后寻找到后面的位置,那么它似乎工作。

例如,这是我的测试:

var duration = ytplayer.getDuration();
ytplayer.seekTo(0, true);

它告诉我总是回到初始位置。

答案 2 :(得分:0)

我遇到了同样的问题,但这些解决方案都不适用于我。我最终使用它来使用HTML5查看器(Chrome和Firefox)

function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING){  // for Chrome and Firefox to "restart" properly
        var ct = player.getCurrentTime();
        var dur = player.getDuration();

        if (ct > (dur-.5) ){
            player.seekTo(0, true);
        }
    }
}

答案 3 :(得分:0)

小心,在文档中说:

“玩家将在此之前前往最近的关键帧,除非玩家已经下载了用户正在寻找的视频部分。在这种情况下,玩家将前进到由Flash播放器的NetStream对象的seek()方法指定的指定时间之前或之后的最接近的关键帧。(有关更多信息,请参阅Adobe的文档。)“

https://developers.google.com/youtube/js_api_reference?hl=fr#seekTo