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) { // } }