From fa372585022479df59577d978a11f8541b8e305b Mon Sep 17 00:00:00 2001 From: Jon Hassall Date: Sat, 20 Oct 2018 14:36:10 +0100 Subject: [PATCH] Added custom filters for Audio, in the same way as custom filters are available for Video --- src/FFMpeg/Filters/Audio/AudioFilters.php | 14 +++++ src/FFMpeg/Filters/Audio/CustomFilter.php | 52 +++++++++++++++++++ tests/Unit/Filters/Audio/CustomFilterTest.php | 20 +++++++ 3 files changed, 86 insertions(+) create mode 100644 src/FFMpeg/Filters/Audio/CustomFilter.php create mode 100644 tests/Unit/Filters/Audio/CustomFilterTest.php diff --git a/src/FFMpeg/Filters/Audio/AudioFilters.php b/src/FFMpeg/Filters/Audio/AudioFilters.php index 5e26990..41308c0 100644 --- a/src/FFMpeg/Filters/Audio/AudioFilters.php +++ b/src/FFMpeg/Filters/Audio/AudioFilters.php @@ -71,4 +71,18 @@ class AudioFilters return $this; } + + /** + * Applies a custom filter + * + * @param string $parameters + * + * @return AudioFilters + */ + public function custom($parameters) + { + $this->media->addFilter(new CustomFilter($parameters)); + + return $this; + } } diff --git a/src/FFMpeg/Filters/Audio/CustomFilter.php b/src/FFMpeg/Filters/Audio/CustomFilter.php new file mode 100644 index 0000000..4c1a29c --- /dev/null +++ b/src/FFMpeg/Filters/Audio/CustomFilter.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace FFMpeg\Filters\Audio; + +use FFMpeg\Format\AudioInterface; +use FFMpeg\Media\Audio; + +class CustomFilter implements AudioFilterInterface +{ + /** @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(Audio $audio, AudioInterface $format) + { + $commands = array('-af', $this->filter); + + return $commands; + } +} diff --git a/tests/Unit/Filters/Audio/CustomFilterTest.php b/tests/Unit/Filters/Audio/CustomFilterTest.php new file mode 100644 index 0000000..9c527e2 --- /dev/null +++ b/tests/Unit/Filters/Audio/CustomFilterTest.php @@ -0,0 +1,20 @@ +getAudioMock(); + $format = $this->getMock('FFMpeg\Format\AudioInterface'); + + $filter = new CustomFilter('whatever i put would end up as a filter'); + $this->assertEquals(array('-af', 'whatever i put would end up as a filter'), $filter->apply($audio, $format)); + } +}