<?php 

/*
--------------------------------------------------
Класс для работы с видеофайлами
Работает автономно без установки расширения ffmpeg 
на сервер, если он не установлен
--------------------------------------------------
*/
  
CLASS FFMPEG{
  
  /*
  -------------------
  Получение скриншота
  -------------------
  */
  
  PUBLIC STATIC FUNCTION SCREEN($path_video, $path_screen, $duration = "00:00:05") {
    
    //$path_video - путь к видеофайлу
    //$path_screen - путь куда сохранять скриншот
    //$duration - момент кадра который нужно скринить / формат 00(час):00(минута):00(секунда)
    
    //Сначала пытаемся подключиться к ffmpeg если он установлен на сервер
    IF (CLASS_EXISTS('ffmpeg_movie')){
      
      //Получаем номер кадра для скриншота
      $frame = 25;
      
      //Путь до видео
      $movie = NEW ffmpeg_movie($path_video);
      
      $ff_frame = $movie->getFrame($frame);
      
      //Если такой кадр есть
      IF ($ff_frame) {

        $gd_image = $ff_frame->toGDImage();
        
        IF ($gd_image) {
          
          imagepng($gd_image, $path_screen);
          imagedestroy($gd_image);
        
        }
      
      }
      
    }ELSE{
      
      EXEC('ffmpeg -i '.$path_video.' -ss '.$duration.' -vframes 1 '.$path_screen.'');
      
    }
    
  }
  
  /*
  ----------------------
  Получение длительности
  ----------------------
  */
  
  PUBLIC STATIC FUNCTION DURATION($path_video) {
    
    //$path_video - путь к видеофайлу
    
    //Сначала пытаемся подключиться к ffmpeg если он установлен на сервер
    IF (CLASS_EXISTS('ffmpeg_movie')){
      
      //Путь до видео
      $movie = NEW ffmpeg_movie($path_video);
      
      //Получаем длительность видео в секундах
      $sec = $movie->getDuration();
      
      $duration = GMDATE("H:i:s", $sec);
      
      RETURN $duration;
      
    }ELSE{
      
      $EX = EXEC("ffmpeg -i ".$path_video." 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//");
      
      $duration = MB_SUBSTR($EX, 0, 8, 'UTF-8');
      
      RETURN $duration;
    
    }
    
  }
  
}