Vimeo расчет использования времени - PullRequest
1 голос
/ 17 ноября 2011

В основном я пытаюсь создать сервис, где пользователи платят за минуты видео. Однако пользователь не будет выставлен счет, если видео буферизируется

Так что мне нужно рассчитать количество секунд, в течение которых воспроизводится видео. Счетчик должен увеличиваться, только если видео воспроизводится, а не останавливается / буферизируется / останавливается. Скажем, если пользователь смотрит 5 минут 5 раз, то общий счетчик должен отображать 25 минут.

Вот мой код ... но проблема в том, что Eventlistner срабатывает в быстрой последовательности, и счетчик увеличивается не пропорционально времени воспроизведения видео

Взгляните на работающий онлайн код здесь http://guwahaticity.com/vimeotest.html

Вот код того же

            <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> 

1 Ответ

0 голосов
/ 17 ноября 2011

Похоже, что событие playProgress происходит чаще, чем раз в секунду.Как насчет увеличения счетчика, только если последнее событие было запущено более секунды назад, например:

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);
   }
}
...