9

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

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

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

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

那么,还有其他人有这个问题吗?

4

4 回答 4

5

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

于 2012-07-11T10:17:26.040 回答
0

小心,在文档中它说:

“播放器将在该时间之前前进到最近的关键帧,除非播放器已经下载了用户正在寻找的视频部分。在这种情况下,播放器将在指定时间之前或之后前进到最近的关键帧。通过 Flash 播放器的 NetStream 对象的 seek() 方法。(有关详细信息,请参阅 Adob​​e 的文档。)“

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

于 2013-12-05T00:01:34.433 回答
0

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

例如,这是我的测试:

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

它向我展示了总是回到初始位置。

于 2013-01-18T16:07:06.030 回答
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);
        }
    }
}
于 2013-04-16T15:22:23.107 回答