From ba7bd907809bd1b861bab52df9a473db4207326c Mon Sep 17 00:00:00 2001 From: Guilherme Date: Thu, 26 Sep 2013 16:03:58 -0300 Subject: [PATCH] Created ClipFilter --- src/FFMpeg/Filters/Video/ClipFilter.php | 65 +++++++++++++++++++++++ src/FFMpeg/Filters/Video/VideoFilters.php | 15 ++++++ 2 files changed, 80 insertions(+) create mode 100644 src/FFMpeg/Filters/Video/ClipFilter.php diff --git a/src/FFMpeg/Filters/Video/ClipFilter.php b/src/FFMpeg/Filters/Video/ClipFilter.php new file mode 100644 index 0000000..ecb2671 --- /dev/null +++ b/src/FFMpeg/Filters/Video/ClipFilter.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FFMpeg\Filters\Video; + +use FFMpeg\Format\VideoInterface; +use FFMpeg\Media\Video; +use FFMpeg\Coordinate\TimeCode; + +class ClipFilter implements VideoFilterInterface +{ + /** @var TimeCode */ + private $start; + /** @var TimeCode */ + private $duration; + /** @var integer */ + private $priority; + + public function __construct(TimeCode $start, TimeCode $duration, $priority = 0) + { + $this->start = $start; + $this->duration = $duration; + $this->priority = $priority; + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return $this->priority; + } + + /** + * @return TimeCode + */ + public function getStart() + { + return $this->start; + } + + /** + * @return TimeCode + */ + public function getDuration() + { + return $this->duration; + } + + /** + * {@inheritdoc} + */ + public function apply(Video $video, VideoInterface $format) + { + return array('-ss', $this->start->__toString(), '-t', $this->duration->__toString()); + } +} diff --git a/src/FFMpeg/Filters/Video/VideoFilters.php b/src/FFMpeg/Filters/Video/VideoFilters.php index d0ffc8d..5a9fd6b 100644 --- a/src/FFMpeg/Filters/Video/VideoFilters.php +++ b/src/FFMpeg/Filters/Video/VideoFilters.php @@ -66,6 +66,21 @@ class VideoFilters extends AudioFilters return $this; } + + /** + * Clips (cuts) the video. + * + * @param TimeCode $start + * @param TimeCode $duration + * + * @return VideoFilters + */ + public function clip($start, $duration) + { + $this->media->addFilter(new ClipFilter($start, $duration)); + + return $this; + } /** * Resamples the audio file.