如何检测youtube getCurrentTime()中的变化?

时间:2014-03-26 02:19:14

标签: javascript youtube youtube-api detection

有没有办法检测YouTube API的getCurrentTime()中的时间变化?

目的:在我的页面中播放有限时间(<1分钟)内的单个视频,然后转到下一个视频。

我正在考虑使用object.watch但它只适用于变量而不是函数。

我还尝试在原始源代码https://s.ytimg.com/yts/jsbin/www-widgetapi-vfl9twtxR.js中绑定某些东西,但它太复杂了。

2 个答案:

答案 0 :(得分:0)

由于YouTube播放器包含在iFrame中,因此您依赖于播放器所暴露的内容,并且当他们通过getCurrentTime()函数暴露当前时间时,他们还没有暴露任何引发的事件每当时间可能更新(事实上,时间只更新为暴露的功能每秒6或7次,并且它不总是一致的。)

所以你唯一的选择就是设置一个javascript计时器。有很多方法可以做到这一点;一个简单的就是这样:

setInterval(function(){
   // here you'd raise some sort of event based on the value of getCurrentTime();
   },100); // polling 8 times a second, to make sure you get it every time it changes. 

由于iFrame中的postMessage并不总是完全一致,因此您可以使此间隔计时器更大。或者您可以使用requestAnimationFrame之类的东西每秒轮询60次。

答案 1 :(得分:0)

的第一个例子

https://developers.google.com/youtube/iframe_api_reference#Getting_Started

几乎完全可以为您提供入门所需的内容。一旦视频开始,那么代码就会启动一个计时器,然后等待6秒钟来停止视频。你想要做的不是在6秒后停止视频,而是在60秒后在同一个div上发射一个新的YT.Player实例。