可能?记录嵌入的YouTube视频的播放次数

时间:2013-03-01 03:28:11

标签: javascript ruby-on-rails youtube youtube-api soundcloud

我有一个允许用户发布视频的网络应用程序。我想知道是否有可能记录播放次数,这样每次有人点击播放按钮时,计数器都会增加+1。

我目前正在使用auto_html进行嵌入:

   <% if micropost.url.include? 'youtu' %>
      <%= auto_html(micropost.url) {youtube(:width => 550, :height => 190)}   %>
   <% end %>

   <% if micropost.url.include? 'soundcloud' %>
     <%= auto_html(micropost.url) {soundcloud}  %>
   <% end %>

对于Youtube,当我点击嵌入视频的任何地方时,它必须记录,而对于Soundcloud,一旦点击了播放按钮,就必须进行播放。怎么可以这样做?非常感谢输入。

我不希望视频的YouTube观看次数有效,我想知道我网站上有人多少次观看它。

1 个答案:

答案 0 :(得分:2)

。 。 YouTube API ("video entry")以更可靠的方式为您提供此信息,因此您无需自行存储。只需获取“entry-&gt; yt:statistics-&gt; viewCount”信息。

。 。值得注意的是,当你开始播放视频时,“viewCount”不会增加,而是在一段时间之后。我记不清究竟有多少,但我认为这是你观看75%的视频时的事情。

。 。 编辑只是把它放在这里所以任何通过谷歌的人都会得到它。

。 。如果由于某种原因需要将其保存在服务器上,则可以在视频开始播放时使用Youtube JavaScript API to get a event fired(检查“onStateChange”事件的值为“1” - 当视频开始实际播放时玩)。 SoundCloud也有一个Widget API event for that: "onMediaStart"

。 。然后,您可以进行一些Ajax调用以保存服务器上的信息。

var MEDIA_ID = 1; //your internal's media ID;
function checkPlayerState(newState) { if (newState === 1) { incrementCount(); } }
function incrementCount() { $.post('inc.php', {mediaid: MEDIA_ID}); }

soundcloud.addEventListener('onMediaStart', incrementCount);
ytplayer.addEventListener('onStateChange', checkPlayerState);