2011-11-17 6 views
1

기본적으로 사용자가 소비 한 비디오 분을 기준으로 요금을 부과하는 서비스를 만들려고합니다. 그러나 동영상이 버퍼링되면 사용자에게 청구되지 않습니다.vimeo 시간 사용량 계산

그래서 동영상이 재생되는 시간 (초)을 계산해야합니다. 비디오가 재생되고 일시 중지/버퍼링/중지되지 않은 경우에만 카운터가 증가합니다. 사용자가 5 분 동안 5 회 시청하면 총 카운터에 25 분이 표시되어야한다고 말합니다. 여기

은 내 코드입니다 ..하지만 문제는 빠르게 연속 카운터에 리스너 (EventListner) 화재가

여기 온라인 실행 코드 http://guwahaticity.com/vimeotest.html

에서보세요 동영상 재생 시간 unproportionately하지 증가됩니다이다 여기에 같은 코드가 있습니다

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
     <script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script> 

<script type="text/javascript"> 
    var counter = 0; 
    jQuery(document).ready(function() { 

     var playerID = document.querySelector('iframe'); 

     $f(playerID).addEvent('ready', ready); 

     function ready(playerID) { 
      Froogaloop(playerID).addEvent('playProgress', playProgress); 

     } 

     function playProgress() { 
      counter = counter + 1; 
      $(".playp").html(counter); 
     } 

    }); 
</script> 


    <iframe class="vimeo" id="player1" src="http://player.vimeo.com/video/3718294?api=1&player_id=player1" width="500" height="281" frameborder="0"></iframe> 

    <hr> 
    This video has been played for <div class="playp"></div> 
+0

데모 사이트 +1! –

답변

0

playProgress 이벤트가 1 초에 1 회 이상 발생하는 것처럼 보입니다. 1 초 전 마지막 이벤트가 발생한 경우에만 카운터를 늘리는 방법은 다음과 같습니다.

var last = new Date(0); 

function playProgress() { 

    Date now = new Date(); 

    if(now.getTime() - last.getTime() >= 1000){ 
     counter = counter + 1; 
     last = now; 
     $(".playp").html(counter); 
    } 
} 
+0

thnx .. 그걸 시도해 봤어. prob 나중에 비디오 경련 문제가 발생했다. vimeo는 몇 가지 알 수없는 이유로 몇 초 동안 비디오를 되 감으 며 ... 마침내 getcurrenttime() func과 함께 논리 위에 사용하여 작업을 얻는다. 끝난.. –