【问题标题】:How to detect change in youtube getCurrentTime()?如何检测 youtube getCurrentTime() 的变化?
【发布时间】:2014-03-26 02:19:13
【问题描述】:

有什么方法可以检测YouTube API的getCurrentTime()中时间的变化吗?

目的:在我的页面中播放有限时间(

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

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

【问题讨论】:

  • 当然它太复杂了,因为它已经被缩小了,人类很难解释它......

标签: javascript youtube youtube-api detection


【解决方案1】:

由于 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 次。

【讨论】:

    【解决方案2】:

    第一个例子

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2015-08-08
      • 2017-02-27
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2017-02-12
      相关资源
      最近更新 更多