Beispiel #1
2
 /**
  * @param string        $filename
  * @param Output        $output
  * @param callable|null $callback
  *
  * @return Media
  */
 public function save(string $filename, Output $output, callable $callback = null) : Media
 {
     $commandBuilder = new CommandBuilder($this, $output);
     $tmpDir = sys_get_temp_dir() . '/' . sha1(uniqid()) . '/';
     $this->fs->mkdir($tmpDir);
     $passes = $output->getPasses();
     $this->setCallbackProperty($callback, 'totalPasses', $passes);
     for ($i = 0, $l = $passes; $i < $l; ++$i) {
         if (null !== $callback) {
             $this->setCallbackProperty($callback, 'currentPass', $i + 1)->setCallbackProperty($callback, 'currentFrame', 0)->setCallbackProperty($callback, 'totalFrames', $this->getFrameCount($output));
         }
         $this->ffmpeg->run(sprintf('%s %s %s %s "%s" -y', $commandBuilder->computeInputs(), $commandBuilder->computePasses($i, $passes, $tmpDir), $commandBuilder->computeFormatFilters(), $commandBuilder->computeParams(), $filename), get_class($callback) == 'Closure' || null === $callback ? $callback : array($callback, 'callback'));
     }
     $this->fs->remove($tmpDir);
     return $this;
 }