使用 YoutubeAPI 播放 youtube 视频直到特定时间并暂停

Posted

技术标签:

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

有没有办法使用 Youtube 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);

【讨论】:

酷,这是朝着正确方向迈出的一步。但是,我希望它在那时暂停,而不是结束视频。有什么办法可以做到吗? (我说暂停是因为我不想显示其他视频建议)

以上是关于使用 YoutubeAPI 播放 youtube 视频直到特定时间并暂停的主要内容,如果未能解决你的问题,请参考以下文章

Youtube API:搜索可在移动设备上播放的视频

使用 Youtube API 重播视频

Youtube API - onclick 播放视频 - 跨浏览器

YouTube API 音量控制

youtube API 用于第三方视频播放器

(YoutubeAPI,Flutter) 我没有看到选择 youtube chanel 的弹出窗口