/** * @param string $inFilename * @param Audio $spec * @param string $outFilename * * @return string */ public function convert($inFilename, Specification $spec, $outFilename) { $audio = $this->ffmpeg->open($inFilename); $format = $this->createFormat($spec->getAudioFormat()); if ($spec->getAudioCodec()) { $format->setAudioCodec($spec->getAudioCodec()); } if ($spec->getAudioBitrate()) { $format->setAudioKiloBitrate($spec->getAudioBitrate()); } if ($spec->getAudioSamplerate()) { $audio->addFilter(new AudioResamplableFilter($spec->getAudioSamplerate())); } if ($spec->getAudioChannels()) { $format->setAudioChannels($spec->getAudioChannels()); } $audio->save($format, $outFilename); }
/** * @param string $inFilename * @param Video $spec * @param string $outFilename */ public function convert($inFilename, Specification $spec, $outFilename) { $video = $this->ffmpeg->open($inFilename); $format = $this->createFormat($spec->getVideoFormat()); $resizeMode = ResizeFilter::RESIZEMODE_FIT; if ($spec->getResizeMode()) { $resizeMode = $spec->getResizeMode(); } $video->addFilter(new SynchronizeFilter()); //if ($source->getWidth() > $spec->getWidth() || $source->getHeight() > $spec->getHeight()) { if ($spec->getWidth() && $spec->getHeight()) { $video->addFilter(new ResizeFilter(new Dimension($spec->getWidth(), $spec->getHeight()), $resizeMode)); } if ($spec->getVideoCodec()) { $format->setVideoCodec($spec->getVideoCodec()); } if ($spec->getAudioCodec()) { $format->setAudioCodec($spec->getAudioCodec()); } if ($spec->getVideoBitrate()) { $format->setKiloBitrate($spec->getVideoBitrate()); } if ($spec->getVideoFramerate() && $spec->getVideoGop()) { $video->addFilter(new FrameRateFilter(new FrameRate($spec->getVideoFramerate()), $spec->getVideoGop())); } if ($spec->getAudioBitrate()) { $format->setAudioKiloBitrate($spec->getAudioBitrate()); } if ($spec->getAudioSamplerate()) { $video->addFilter(new AudioResamplableFilter($spec->getAudioSamplerate())); } elseif ($format instanceof Flv) { $video->addFilter(new AudioResamplableFilter(44100)); } if ($spec->getAudioChannels()) { $format->setAudioChannels($spec->getAudioChannels()); } $video->save($format, $outFilename); if ($format instanceof X264) { $this->mp4box->process($outFilename); } }