protected function execute(InputInterface $input, OutputInterface $output)
 {
     $start_url = APP_CWD . "/../files/tmp/0533087001448969975.mp4";
     $outFile = time();
     $output_url = APP_CWD . "/../files/tmp/{$outFile}";
     $prova = JambonCoreFactory::getInstance();
     $prova->initTranscodeOperation("X264", false, 576, '200X200', 2, $start_url, $output_url);
     $t1 = time();
     $totalSize = filesize($start_url);
     $res = $prova->performTranscodeOperation(function ($buffer, $type) use($totalSize) {
         $match = [];
         preg_match("/(\\d+)kB/", $buffer, $match);
         $current = @$match[1];
         if ($current) {
             $current = intval(round($current * 1000));
             //dump($current, $totalSize);
             $progress = intval((int) $current * 100 / $totalSize);
             //
             //rendering
             $string = " {$progress} %";
             $back = strlen($string);
             return "[{$back}D" . $string;
         } else {
             return $buffer;
         }
     });
     $t2 = time();
     $seconds = $t2 - $t1;
     $output->writeln("<info>Transcoding effettuato in {$seconds} secondi</info>");
 }
 public function index()
 {
     $username = Session::getUsername();
     $start_url = APP_CWD . "/../files/Q8_best.mov";
     $output_url = APP_CWD . "/../files/Ciao";
     $prova = JambonCoreFactory::getInstance();
     $prova->initTranscodeOperation("X264", false, '200X200', 2, $start_url, $output_url);
     $res = $prova->performTranscodeOperation();
     return $res;
 }
 /**
  * Avvia un Job in coda
  *
  * @param array $params
  * @param LoggerInterface $logger (optional)
  * @return bool
  */
 public function run()
 {
     $fs = new Filesystem();
     $taskId = $this->getParam('taskId');
     $taskModel = TaskModel::where('id', '=', $taskId)->firstOrFail();
     $this->setLogContext($taskModel->toArray());
     $jobModel = $taskModel->job()->first();
     $fileModel = $jobModel->files()->first();
     //prendi il jobservice col dao del job associato al task settato
     $job = $taskModel->job()->firstOrFail();
     $this->logInfo("Controllo della directory ");
     $service = new JobService();
     $service->setDao($job);
     $folder = $service->resolveArtifactsPath();
     $fsM = SymfonyFileSystemManager::getInstance();
     $fsM->createDir($folder, '0700', true);
     $input = $fileModel->path;
     $output = $folder . DIRECTORY_SEPARATOR . BinaryFile::resolveName();
     //transcoding
     $transcoder = JambonCoreFactory::getInstance();
     $resolution = $this->resolveResolution($taskModel);
     $taskModel->updateResolution($resolution);
     $taskModel->setStarted();
     $transcoder->initTranscodeOperation($taskModel->format, false, $resolution, 2, $input, $output);
     $ffprobeInfo = $transcoder->performTranscodeOperation();
     $output = $transcoder->getOutputPath();
     $taskModel->setCompleted();
     $ffprobeInfoArray = @json_decode($ffprobeInfo, true);
     if (!empty($ffprobeInfoArray)) {
         //risoluzione del filename in output
         $fileName = $fileModel->getName();
         $vanillaName = pathinfo($fileName, PATHINFO_FILENAME);
         $extension = pathinfo($output, PATHINFO_EXTENSION);
         $name = $vanillaName . '_' . $resolution . '.' . $extension;
         //salvataggio del model file in db
         $fileModel = FileModel::create($output, FileModel::FILE_ROLE_ARTIFACT, $name);
         //salvataggio del ffprobe
         $fileModel->setMeta(FileModel::META_FFPROBE_KEY, $ffprobeInfoArray, true);
         $fileModel->updateFileHash();
         $taskModel->files()->attach($fileModel->id);
         $taskModel->save();
     } else {
         throw new \Exception("Error Processing transcoding");
     }
     //se non ci sono task aperti chiudo il job
     //$shouldCloseJob = (TaskModel::where('completed_at', '=', null)->count() === 0);
     //dump($shouldCloseJob);
     // if($shouldCloseJob) {
     // }
 }