【问题标题】:Use YoutubeAPI to play youtube video until a particular time and pause使用 YoutubeAPI 播放 youtube 视频直到特定时间并暂停
【发布时间】:2012-12-18 14:42:04
【问题描述】:

有没有办法使用 Youtube API 将视频播放到视频中的某个点然后暂停?

【问题讨论】:

    标签: javascript api youtube-javascript-api


    【解决方案1】:

    我已经修改了YouTube Player API Reference for iframe Embeds 中的代码以在一定秒数后暂停播放。

    Demo

    代码通过等待onPlayerStateChange 事件来工作。当事件触发时,它会检查该事件是否为PLAYING 事件。如果是,它会计算从当前时间(getCurrentTime() 方法)到所需暂停点(硬编码为stopPlayAt 变量)的剩余时间。它设置一个 Javascript 计时器来等待该差异,然后向 API 传递一个命令来暂停视频。

    【讨论】:

    • 这太棒了。非常感谢。
    • 这只有在用户没有弄乱按钮的情况下才有效,所以在编码时请考虑;)
    • @Nippey,不确定我明白你的意思……我编写的代码会自动清除每次用户交互的超时。然后,如果动作是播放,它会重新计算下一次停止所需的超时时间。这应该足以解决任何用户交互并让计时器始终在正确的时间停止。
    • 如果用户除了带宽限制之外什么都不做,导致视频在你的 js 计数器运行时花费任何时间缓冲,那么你将关闭并提前暂停/结束。需要考虑的事情。
    • 它甚至可以在缓冲中工作(未经测试,ymmv :-p)。 YouTube API 有一个单独的缓冲状态(YT.PlayerState.BUFFERING,请参阅onStateChange 的文档)。当播放器状态更改为除播放之外的任何内容时,我对其进行编码的方式将清除停止计时器。当状态变回YT.PlayerState.PLAYING 时,计时器将重新启动,并根据当前播放位置计算出新的超时时间。
    【解决方案2】:

    您可以使用 Object 语法中的命令cueVideoById 来实现。

    请看这里:https://developers.google.com/youtube/iframe_api_reference#cueVideoById

    这就是开始这样的视频的方式。

    //Minimal Example
    player.cueVideoById({videoId:String, endSeconds:Number});
    player.playVideo();
    

    编辑:上面的示例停止了视频。如果您想暂停它,JavaScript 代码需要更多操作。

    具体来说,你必须轮询合适的时间。

    function checkTime() {
       if ( player.getCurrentTime() == finishTime )
          player.pauseVideo()
       else
          setInterval(checkTime, 500);
    }
    
    checkTime();
    

    或者在JS中跟踪时间:

    var duration = finishTime - player.getCurrentTime();
    player.playVideo()
    setInterval("player.pauseVideo();", duration*1000);
    

    【讨论】:

    • 酷,这是朝着正确方向迈出的一步。但是,我希望它在那时暂停,而不是结束视频。有什么办法可以做到吗? (我说暂停是因为我不想显示其他视频建议)
    猜你喜欢
    • 2016-07-31
    • 2013-08-16
    • 2018-05-28
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2014-08-30
    相关资源
    最近更新 更多