2012-03-31 66 views
8

我试图通过JS API使用Youtube无铬播放器,我遇到了seekto()函数的问题。Youtube播放器的JS API seekTo功能不工作

问题是,有时(我不知道问题何时出现),将seekTo()函数向后调用到视频中未加载的点不会返回,而是停留在当前时间。

这是我做的(想象中的视频240秒长):

  1. 我开始播放视频 - > loadVideoById()。
  2. 我前进(比方说)视频的中间 - > seekTo(120)
  3. 视频正确跳转到我询问的位置。
  4. 我尽量向后到25%的时间移动视频 - > seekTo(60)
  5. 有时视频跳转回60但更多的时候它只能追溯到120

那么,还有谁有相同的问题吗?

+0

我有这个确切的问题。 – wilsonpage 2012-04-29 19:19:43

+0

+1。吉米里的建议并没有削减它。在YouTube开始一个新的缓冲区之后,似乎只有在寻找遥远的位置后才会失败。 – guidupuy 2012-10-02 16:37:02

回答

4

发布一些代码将帮助我们帮助您,但您是否尝试过player.seekTo(60, true); - 第二个参数非常重要 - 将其设置为true将使播放器向视频服务器发送新请求。

0

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

例如,这是我的测试:

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

这表明我总是回到初始位置。

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); 
     } 
    } 
} 
0

要当心,在doc它说工作:

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

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

相关问题