2015-03-28 1 views
2

Есть ли способ поиска видео по кадру с помощью Videogular API? Если нет, то что будет лучше всего работать?перемещение видео вперед/назад по кадру с помощью Videogular API

Спасибо!

+0

Вы знакомитесь с частотой кадров вашего видео? Если вы не знаете, я боюсь, что это невозможно. Если вы знаете, что частота кадров просто использует API.seekTime (время) и проверяет этот пост http://stackoverflow.com/questions/20336955/how-to-step-one-frame-forward-and-one-frame-backward-in -video-воспроизведения – elecash

+0

спасибо @elecash, я заметил в документах, что seekTime() принимает «целое число», представляющее целевую позицию в секундах ». Таким образом, поиск частичного второго (например, 2,5 с) не поддерживается? – amit

+1

Он должен работать, seekTime поддерживает Number – elecash

ответ

1

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

app.directive("vgFrameButtons", ["VG_STATES", 
    function (VG_STATES) { 
     return { 
      restrict: "E", 
      require: "^videogular", 
      template: 
       '<button class="iconButton" ng-click="prevFrame()"><i class="fa fa-angle-double-left"></i></button>' + 
       '<button class="iconButton" ng-click="nextFrame()"><i class="fa fa-angle-double-right"></i></button>', 
      link: function (scope, elem, attr, API) { 
       var frameTime = 1/29.97; 

       scope.prevFrame = function() { 
        API.seekTime((API.currentTime/1000) - frameTime); 
       }; 
       scope.nextFrame = function() { 
        API.seekTime((API.currentTime/1000) + frameTime); 
       }; 

       scope.$watch(
        function() { 
         return API.currentState; 
        }, 
        function (newVal) { 
         var display = newVal == VG_STATES.PAUSE ? "table-cell" : "none"; 
         elem.css("display", display); 
        } 
       ); 

      } 
     } 
    } 
]);