From b3bfb34475465a186aafa2968607e85086e87fb8 Mon Sep 17 00:00:00 2001 From: Ilja Lukin Date: Tue, 20 Nov 2018 23:32:47 +0100 Subject: [PATCH] added custom frame filter --- .../Filters/Frame/CustomFrameFilter.php | 54 +++++++++++++++++++ src/FFMpeg/Filters/Frame/FrameFilters.php | 14 +++++ 2 files changed, 68 insertions(+) create mode 100644 src/FFMpeg/Filters/Frame/CustomFrameFilter.php diff --git a/src/FFMpeg/Filters/Frame/CustomFrameFilter.php b/src/FFMpeg/Filters/Frame/CustomFrameFilter.php new file mode 100644 index 0000000..8ace0e9 --- /dev/null +++ b/src/FFMpeg/Filters/Frame/CustomFrameFilter.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FFMpeg\Filters\Frame; + +use FFMpeg\Exception\RuntimeException; +use FFMpeg\Media\Frame; + +class CustomFrameFilter implements FrameFilterInterface +{ + /** @var string */ + private $filter; + /** @var integer */ + private $priority; + + /** + * A custom filter, useful if you want to build complex filters + * + * @param string $filter + * @param int $priority + */ + public function __construct($filter, $priority = 0) + { + $this->filter = $filter; + $this->priority = $priority; + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return $this->priority; + } + + /** + * {@inheritdoc} + */ + public function apply(Frame $frame) + { + $commands = array('-vf', $this->filter); + + return $commands; + } +} + diff --git a/src/FFMpeg/Filters/Frame/FrameFilters.php b/src/FFMpeg/Filters/Frame/FrameFilters.php index e4b9614..ad7e95a 100644 --- a/src/FFMpeg/Filters/Frame/FrameFilters.php +++ b/src/FFMpeg/Filters/Frame/FrameFilters.php @@ -36,4 +36,18 @@ class FrameFilters return $this; } + + /** + * Applies a custom filter: -vf foo bar + * + * @param string $parameters + * + * @return FrameFilters + */ + public function custom($parameters) + { + $this->frame->addFilter(new CustomFrameFilter($parameters)); + + return $this; + } }