使用 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 视频直到特定时间并暂停的主要内容,如果未能解决你的问题,请参考以下文章