【问题标题】:Youtube player JS API seekTo function not workingYoutube 播放器 JS API seekTo 功能不起作用
【发布时间】:2012-03-31 12:28:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • +1。吉默里的建议并没有削减它。在 YouTube 必须启动新缓冲区之后,它似乎只会在寻找远程位置后失败。

标签: javascript youtube-javascript-api


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    例如,这是我的测试:

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

    它显示我总是回到初始位置。

    【讨论】:

    • 对我不起作用。 (同一问题的 seekTo 有时会失败)
    【解决方案3】:

    我有同样的问题,但这些解决方案都不适合我。我最终使用它来让它与 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);
            }
        }
    }
    

    【讨论】:

      【解决方案4】:

      小心,在文档中它说:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-21
        • 2014-11-21
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2012-05-14
        • 2013-01-04
        • 2020-06-27
        相关资源
        最近更新 更多