get("filter"); $type = $preset->get("type")?:"complex"; $extra = $preset->get("extra"); switch ($type) { case 'audio': $filter_type = "-af"; $filter_extra = ""; break; case 'video': $filter_type = "-vf"; $filter_extra = ""; break; case 'complex': default: $filter_type = "-filter_complex"; $filter_extra = ""; break; } /*if (($size = $preset->getParam("size"))) { $filter = $this->appendFilterOption($filter, "s", $size); }*/ // Create a progress dialog $dialog = $this->createDialog(DIALOG_PROGRESS, "Applying filter"); $dialog->show(); // Create command line to run ffmpeg $cmdline = sprintf( "ffmpeg -loglevel error -y -stats -i %s %s %s %s %s 2>&1", escapeshellarg($input->getFilename()), $filter_type, escapeshellarg($filter), trim($extra." ".$filter_extra), escapeshellarg($output->getFilename()) ); // Create a coprocess for ffmpeg $frames = $input->getVideoDuration()->frames; $ffmpeg = $this->createProcess($cmdline, function ($read) use ($dialog,$frames) { $dialog->setText(trim($read)); if (preg_match('/^frame=[\s]*([0-9]+)\s/', trim($read), $match)) { $frame = intval($match[1]); $pc = round($frame/$frames*100); $dialog->setProgress($pc); } if ($dialog->isCancelled()) return false; // frame= 4140 fps=102 q=-1.0 Lsize= 4559kB time=00:00:48.04 bitrate= 777.3kbits/s speed=1.18x }); $ffmpeg->run(); unset($dialog); } } return new FfmpegPlugin();