ComplexMedia has been renamed to the AdvancedMedia.

This commit is contained in:
CaliforniaMountainSnake 2020-03-23 17:47:36 +03:00
commit 0d3bed21a7
19 changed files with 150 additions and 144 deletions

View file

@ -520,22 +520,22 @@ $video
More details about concatenation in FFMPEG can be found [here](https://trac.ffmpeg.org/wiki/Concatenate), [here](https://ffmpeg.org/ffmpeg-formats.html#concat-1) and [here](https://ffmpeg.org/ffmpeg.html#Stream-copy).
### ComplexMedia
ComplexMedia may have multiple inputs and multiple outputs.
### AdvancedMedia
AdvancedMedia may have multiple inputs and multiple outputs.
This class has been developed primarily to use with `-filter_complex`.
So, its `filters()` method accepts only filters that can be used inside `-filter_complex` command.
ComplexMedia already contains some built-in filters.
AdvancedMedia already contains some built-in filters.
#### Base usage
For example:
```php
$complexMedia = $ffmpeg->openComplex(array('video_1.mp4', 'video_2.mp4'));
$complexMedia->filters()
$advancedMedia = $ffmpeg->openAdvanced(array('video_1.mp4', 'video_2.mp4'));
$advancedMedia->filters()
->custom('[0:v][1:v]', 'hstack', '[v]');
$complexMedia
$advancedMedia
->map(array('0:a', '[v]'), new X264('aac', 'libx264'), 'output.mp4')
->save();
```
@ -545,7 +545,7 @@ This code takes 2 input videos, stacks they horizontally in 1 output video and a
#### Complicated example
A more difficult example of possibilities of the ComplexMedia. Consider all input videos already have the same resolution and duration. ("xstack" filter has been added in the 4.1 version of the ffmpeg).
A more difficult example of possibilities of the AdvancedMedia. Consider all input videos already have the same resolution and duration. ("xstack" filter has been added in the 4.1 version of the ffmpeg).
```php
$inputs = array(
@ -555,14 +555,14 @@ $inputs = array(
'video_4.mp4',
);
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia->filters()
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia->filters()
->custom('[0:v]', 'negate', '[v0negate]')
->custom('[1:v]', 'edgedetect', '[v1edgedetect]')
->custom('[2:v]', 'hflip', '[v2hflip]')
->custom('[3:v]', 'vflip', '[v3vflip]')
->xStack('[v0negate][v1edgedetect][v2hflip][v3vflip]', XStackFilter::LAYOUT_2X2, 4, '[resultv]');
$complexMedia
$advancedMedia
->map(array('0:a'), new Mp3(), 'video_1.mp3')
->map(array('1:a'), new Flac(), 'video_2.flac')
->map(array('2:a'), new Wav(), 'video_3.wav')
@ -580,18 +580,18 @@ As you can see, you can take multiple input sources, perform the complicated pro
You do not have to use `-filter_complex`. You can use only `-map` options. For example, just extract the audio from the video:
```php
$complexMedia = $ffmpeg->openComplex(array('video.mp4'));
$complexMedia
$advancedMedia = $ffmpeg->openAdvanced(array('video.mp4'));
$advancedMedia
->map(array('0:a'), new Mp3(), 'output.mp3')
->save();
```
#### Customisation
If you need you can extra customize the result ffmpeg command of the ComplexMedia:
If you need you can extra customize the result ffmpeg command of the AdvancedMedia:
```php
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia
->setInitialParameters(array('the', 'params', 'that', 'will', 'be', 'added', 'before', '-i', 'part', 'of', 'the', 'command'))
->setAdditionalParameters(array('the', 'params', 'that', 'will', 'be', 'added', 'at', 'the', 'end', 'of', 'the', 'command'));
```

View file

@ -66,7 +66,7 @@ class FFMpegDriver extends AbstractBinary
{
preg_match('#version\s(\S+)#', $this->command('-version'), $version);
if (!isset($version[1])) {
throw new RuntimeException('Cannot to parse the ffmpeg version!');
throw new RuntimeException('Cannot to parse the ffmpeg version!');
}
return $version[1];

View file

@ -16,7 +16,7 @@ use FFMpeg\Driver\FFMpegDriver;
use FFMpeg\Exception\InvalidArgumentException;
use FFMpeg\Exception\RuntimeException;
use FFMpeg\Media\Audio;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
use FFMpeg\Media\Video;
use Psr\Log\LoggerInterface;
@ -110,11 +110,11 @@ class FFMpeg
*
* @param string[] $inputs Array of files to be opened.
*
* @return ComplexMedia
* @return AdvancedMedia
*/
public function openComplex($inputs)
public function openAdvanced($inputs)
{
return new ComplexMedia($inputs, $this->driver, $this->ffprobe);
return new AdvancedMedia($inputs, $this->driver, $this->ffprobe);
}
/**

View file

@ -1,8 +1,8 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
/**
* @see https://ffmpeg.org/ffmpeg-filters.html#anullsrc
@ -57,7 +57,7 @@ class ANullSrcFilter extends AbstractComplexFilter
/**
* {@inheritdoc}
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return array(
'-filter_complex',

View file

@ -1,6 +1,6 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
abstract class AbstractComplexFilter implements ComplexCompatibleFilter
{

View file

@ -1,10 +1,13 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Filters\FilterInterface;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
/**
* A filter that can be used inside "-filter_complex" option.
*/
interface ComplexCompatibleFilter extends FilterInterface
{
/**
@ -24,9 +27,9 @@ interface ComplexCompatibleFilter extends FilterInterface
/**
* Apply the complex filter to the given media.
*
* @param ComplexMedia $media
* @param AdvancedMedia $media
*
* @return string[] An array of arguments.
*/
public function applyComplex(ComplexMedia $media);
public function applyComplex(AdvancedMedia $media);
}

View file

@ -1,11 +1,11 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
/**
* Container for the complex filter.
* Container for the complex compatible filter.
*/
class ComplexFilterContainer implements ComplexFilterInterface
{
@ -93,7 +93,7 @@ class ComplexFilterContainer implements ComplexFilterInterface
/**
* {@inheritdoc}
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return $this->baseFilter->applyComplex($media);
}

View file

@ -1,7 +1,10 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
/**
* A filter that is completely ready to use inside "-filter_complex" option.
*/
interface ComplexFilterInterface extends ComplexCompatibleFilter
{
/**

View file

@ -1,25 +1,25 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Coordinate\Dimension;
use FFMpeg\Filters\Video\PadFilter;
use FFMpeg\Filters\Video\WatermarkFilter;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
class ComplexFilters
{
/**
* @var ComplexMedia
* @var AdvancedMedia
*/
protected $media;
/**
* ComplexFilters constructor.
*
* @param ComplexMedia $media
* @param AdvancedMedia $media
*/
public function __construct(ComplexMedia $media)
public function __construct(AdvancedMedia $media)
{
$this->media = $media;
}

View file

@ -1,8 +1,8 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
class CustomComplexFilter extends AbstractComplexFilter
{
@ -36,7 +36,7 @@ class CustomComplexFilter extends AbstractComplexFilter
/**
* {@inheritdoc}
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return array('-filter_complex', $this->filter);
}

View file

@ -1,8 +1,8 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
/**
* @see https://ffmpeg.org/ffmpeg-filters.html#sine
@ -77,11 +77,11 @@ class SineFilter extends AbstractComplexFilter
/**
* Apply the complex filter to the given media.
*
* @param ComplexMedia $media
* @param AdvancedMedia $media
*
* @return string[] An array of arguments.
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return array(
'-filter_complex',

View file

@ -1,8 +1,8 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
/**
* This filter builds various types of computed inputs.
@ -227,7 +227,7 @@ class TestSrcFilter extends AbstractComplexFilter
/**
* {@inheritdoc}
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return array(
'-filter_complex',

View file

@ -1,8 +1,8 @@
<?php
namespace FFMpeg\Filters\ComplexMedia;
namespace FFMpeg\Filters\AdvancedMedia;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
/**
* "xstack" filter.
@ -80,7 +80,7 @@ class XStackFilter extends AbstractComplexFilter
/**
* {@inheritdoc}
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return array(
'-filter_complex',

View file

@ -12,9 +12,9 @@
namespace FFMpeg\Filters\Video;
use FFMpeg\Coordinate\Dimension;
use FFMpeg\Filters\ComplexMedia\ComplexCompatibleFilter;
use FFMpeg\Filters\AdvancedMedia\ComplexCompatibleFilter;
use FFMpeg\Format\VideoInterface;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
use FFMpeg\Media\Video;
class PadFilter implements VideoFilterInterface, ComplexCompatibleFilter
@ -77,7 +77,7 @@ class PadFilter implements VideoFilterInterface, ComplexCompatibleFilter
/**
* {@inheritdoc}
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return $this->getCommands();
}

View file

@ -12,9 +12,9 @@
namespace FFMpeg\Filters\Video;
use FFMpeg\Exception\InvalidArgumentException;
use FFMpeg\Filters\ComplexMedia\ComplexCompatibleFilter;
use FFMpeg\Filters\AdvancedMedia\ComplexCompatibleFilter;
use FFMpeg\Format\VideoInterface;
use FFMpeg\Media\ComplexMedia;
use FFMpeg\Media\AdvancedMedia;
use FFMpeg\Media\Video;
class WatermarkFilter implements VideoFilterInterface, ComplexCompatibleFilter
@ -76,7 +76,7 @@ class WatermarkFilter implements VideoFilterInterface, ComplexCompatibleFilter
/**
* {@inheritdoc}
*/
public function applyComplex(ComplexMedia $media)
public function applyComplex(AdvancedMedia $media)
{
return $this->getCommands();
}

View file

@ -6,10 +6,10 @@ use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use FFMpeg\Driver\FFMpegDriver;
use FFMpeg\Exception\RuntimeException;
use FFMpeg\FFProbe;
use FFMpeg\Filters\ComplexMedia\ComplexCompatibleFilter;
use FFMpeg\Filters\ComplexMedia\ComplexFilterContainer;
use FFMpeg\Filters\ComplexMedia\ComplexFilterInterface;
use FFMpeg\Filters\ComplexMedia\ComplexFilters;
use FFMpeg\Filters\AdvancedMedia\ComplexCompatibleFilter;
use FFMpeg\Filters\AdvancedMedia\ComplexFilterContainer;
use FFMpeg\Filters\AdvancedMedia\ComplexFilterInterface;
use FFMpeg\Filters\AdvancedMedia\ComplexFilters;
use FFMpeg\Filters\FiltersCollection;
use FFMpeg\Format\AudioInterface;
use FFMpeg\Format\FormatInterface;
@ -18,13 +18,13 @@ use FFMpeg\Format\ProgressListener\AbstractProgressListener;
use FFMpeg\Format\VideoInterface;
/**
* Complex media may have multiple inputs and multiple outputs.
* AdvancedMedia may have multiple inputs and multiple outputs.
* This class accepts only filters for -filter_complex option.
* But you can set initial and additional parameters of the ffmpeg command.
*
* @see http://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs
*/
class ComplexMedia extends AbstractMediaType
class AdvancedMedia extends AbstractMediaType
{
/**
* @var string[]
@ -52,7 +52,7 @@ class ComplexMedia extends AbstractMediaType
private $listeners;
/**
* ComplexMedia constructor.
* AdvancedMedia constructor.
*
* @param string[] $inputs Array of files to be opened.
* @param FFMpegDriver $driver
@ -110,7 +110,7 @@ class ComplexMedia extends AbstractMediaType
{
foreach ($filters as $filter) {
if (!($filter instanceof ComplexFilterInterface)) {
throw new RuntimeException ('For ComplexMedia you can set filters collection'
throw new RuntimeException ('For AdvancedMedia you can set filters collection'
. ' contains only objects that implement ComplexFilterInterface!');
}
}
@ -129,7 +129,7 @@ class ComplexMedia extends AbstractMediaType
/**
* @param string[] $initialParameters
*
* @return ComplexMedia
* @return AdvancedMedia
*/
public function setInitialParameters(array $initialParameters)
{
@ -148,7 +148,7 @@ class ComplexMedia extends AbstractMediaType
/**
* @param string[] $additionalParameters
*
* @return ComplexMedia
* @return AdvancedMedia
*/
public function setAdditionalParameters(array $additionalParameters)
{

View file

@ -3,17 +3,17 @@
namespace Tests\FFMpeg\Functional;
use FFMpeg\Coordinate\Dimension;
use FFMpeg\Filters\ComplexMedia\TestSrcFilter;
use FFMpeg\Filters\ComplexMedia\XStackFilter;
use FFMpeg\Filters\AdvancedMedia\TestSrcFilter;
use FFMpeg\Filters\AdvancedMedia\XStackFilter;
use FFMpeg\Format\Audio\Mp3;
use FFMpeg\Format\Video\X264;
class ComplexMediaTest extends FunctionalTestCase
class AdvancedMediaTest extends FunctionalTestCase
{
/**
* Path prefix to avoid conflicts with another tests.
*/
const OUTPUT_PATH_PREFIX = 'output/complex_media_';
const OUTPUT_PATH_PREFIX = 'output/advanced_media_';
public function testRunWithoutComplexFilterTestExtractAudio()
{
@ -23,8 +23,8 @@ class ComplexMediaTest extends FunctionalTestCase
$output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'extracted_with_map.mp3';
// You can run it without -filter_complex, just using -map.
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia
->map(array('0:a'), $format, $output)
->save();
@ -42,8 +42,8 @@ class ComplexMediaTest extends FunctionalTestCase
$format->setAudioKiloBitrate(30);
$output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'audio_test.mp3';
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia
->map(array('0:a'), $format, $output)
->save();
@ -63,10 +63,10 @@ class ComplexMediaTest extends FunctionalTestCase
$format = new X264('aac', 'libx264');
$output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'multiple_inputs_test.mp4';
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia->filters()
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia->filters()
->custom('[0:v][1:v]', 'hstack', '[v]');
$complexMedia
$advancedMedia
->map(array('0:a', '[v]'), $format, $output)
->save();
@ -77,7 +77,7 @@ class ComplexMediaTest extends FunctionalTestCase
}
/**
* @covers \FFMpeg\Media\ComplexMedia::map
* @covers \FFMpeg\Media\AdvancedMedia::map
*/
public function testMultipleOutputsTestAbsenceOfInputs()
{
@ -92,14 +92,14 @@ class ComplexMediaTest extends FunctionalTestCase
$outputVideo1 = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'test_multiple_outputs_v1.mp4';
$outputVideo2 = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'test_multiple_outputs_v2.mp4';
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia->filters()
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia->filters()
->sine('[a]', 5)
->testSrc('[v1]', TestSrcFilter::TESTSRC, '160x120', 5)
->testSrc('[v2]', TestSrcFilter::TESTSRC, '160x120', 5)
->custom('[v1]', 'negate', '[v1negate]')
->custom('[v2]', 'edgedetect', '[v2edgedetect]');
$complexMedia
$advancedMedia
->map(array('[a]'), $formatMp3, $outputMp3)
->map(array('[v1negate]'), $formatX264, $outputVideo1)
->map(array('[v2edgedetect]'), $formatX264, $outputVideo2)
@ -123,8 +123,8 @@ class ComplexMediaTest extends FunctionalTestCase
}
/**
* @covers \FFMpeg\Filters\ComplexMedia\TestSrcFilter
* @covers \FFMpeg\Filters\ComplexMedia\SineFilter
* @covers \FFMpeg\Filters\AdvancedMedia\TestSrcFilter
* @covers \FFMpeg\Filters\AdvancedMedia\SineFilter
*/
public function testTestSrcFilterTestSineFilter()
{
@ -133,11 +133,11 @@ class ComplexMediaTest extends FunctionalTestCase
$format = new X264('aac', 'libx264');
$output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'testsrc.mp4';
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia->filters()
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia->filters()
->sine('[a]', 10)
->testSrc('[v]', TestSrcFilter::TESTSRC, '160x120', 10);
$complexMedia
$advancedMedia
->map(array('[a]', '[v]'), $format, $output)
->save();
@ -150,8 +150,8 @@ class ComplexMediaTest extends FunctionalTestCase
/**
* XStack filter is supported starting from 4.1 ffmpeg version.
*
* @covers \FFMpeg\Filters\ComplexMedia\XStackFilter
* @covers \FFMpeg\Filters\ComplexMedia\SineFilter
* @covers \FFMpeg\Filters\AdvancedMedia\XStackFilter
* @covers \FFMpeg\Filters\AdvancedMedia\SineFilter
*/
public function testXStackFilter()
{
@ -169,8 +169,8 @@ class ComplexMediaTest extends FunctionalTestCase
$format = new X264('aac', 'libx264');
$output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'xstack_test.mp4';
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia->filters()
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia->filters()
->sine('[a]', 5)
->testSrc('[v1]', TestSrcFilter::TESTSRC, '160x120', 5)
->testSrc('[v2]', TestSrcFilter::TESTSRC, '160x120', 5)
@ -178,7 +178,7 @@ class ComplexMediaTest extends FunctionalTestCase
->testSrc('[v4]', TestSrcFilter::TESTSRC, '160x120', 5)
->xStack('[v1][v2][v3][v4]',
XStackFilter::LAYOUT_2X2, 4, '[v]');
$complexMedia
$advancedMedia
->map(array('[a]', '[v]'), $format, $output)
->save();
@ -196,8 +196,8 @@ class ComplexMediaTest extends FunctionalTestCase
$format = new X264('aac', 'libx264');
$output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'test_of_compatibility_with_existed_filters.mp4';
$complexMedia = $ffmpeg->openComplex($inputs);
$complexMedia->filters()
$advancedMedia = $ffmpeg->openAdvanced($inputs);
$advancedMedia->filters()
// For unknown reasons WatermarkFilter produce an error on Windows,
// because the path to the watermark becomes corrupted.
// This behaviour related with Alchemy\BinaryDriver\AbstractBinary::command().
@ -206,7 +206,7 @@ class ComplexMediaTest extends FunctionalTestCase
// But on Linux systems filter works as expected.
//->watermark('[0:v]', $watermark, '[v]')
->pad('[0:v]', new Dimension(300, 100), '[v]');
$complexMedia
$advancedMedia
->map(array('0:a', '[v]'), $format, $output)
->save();
@ -221,15 +221,15 @@ class ComplexMediaTest extends FunctionalTestCase
$ffmpeg = $this->getFFMpeg();
$format = new X264();
$complexMedia1 = $ffmpeg->openComplex(array(__FILE__));
$complexMedia1
$advancedMedia1 = $ffmpeg->openAdvanced(array(__FILE__));
$advancedMedia1
->map(array('test'), $format, 'outputFile.mp4', false);
$this->assertStringContainsString('acodec', $complexMedia1->getFinalCommand());
$this->assertStringContainsString('acodec', $advancedMedia1->getFinalCommand());
$complexMedia2 = $ffmpeg->openComplex(array(__FILE__));
$complexMedia2
$advancedMedia2 = $ffmpeg->openAdvanced(array(__FILE__));
$advancedMedia2
->map(array('test'), $format, 'outputFile.mp4', true);
$this->assertStringNotContainsString('acodec', $complexMedia2->getFinalCommand());
$this->assertStringNotContainsString('acodec', $advancedMedia2->getFinalCommand());
}
public function testForceDisableVideo()
@ -237,15 +237,15 @@ class ComplexMediaTest extends FunctionalTestCase
$ffmpeg = $this->getFFMpeg();
$format = new X264();
$complexMedia1 = $ffmpeg->openComplex(array(__FILE__));
$complexMedia1->map(array('test'), $format,
$advancedMedia1 = $ffmpeg->openAdvanced(array(__FILE__));
$advancedMedia1->map(array('test'), $format,
'outputFile.mp4', false, false);
$this->assertStringContainsString('vcodec', $complexMedia1->getFinalCommand());
$this->assertStringContainsString('vcodec', $advancedMedia1->getFinalCommand());
$complexMedia2 = $ffmpeg->openComplex(array(__FILE__));
$complexMedia2->map(array('test'), $format,
$advancedMedia2 = $ffmpeg->openAdvanced(array(__FILE__));
$advancedMedia2->map(array('test'), $format,
'outputFile.mp4', false, true);
$this->assertStringNotContainsString('vcodec', $complexMedia2->getFinalCommand());
$this->assertStringNotContainsString('vcodec', $advancedMedia2->getFinalCommand());
}
public function testGlobalOptions()
@ -257,8 +257,8 @@ class ComplexMediaTest extends FunctionalTestCase
);
$ffmpeg = $this->getFFMpeg($configuration);
$complexMedia = $ffmpeg->openComplex(array(__FILE__));
$command = $complexMedia->getFinalCommand();
$advancedMedia = $ffmpeg->openAdvanced(array(__FILE__));
$command = $advancedMedia->getFinalCommand();
foreach ($configuration as $optionName => $optionValue) {
$optionName = str_replace('ffmpeg.', '', $optionName);

View file

@ -0,0 +1,35 @@
<?php
namespace Tests\FFMpeg\Unit\Media;
use FFMpeg\Media\AdvancedMedia;
class AdvancedMediaTest extends AbstractMediaTestCase
{
public function testGetInputs()
{
$driver = $this->getFFMpegDriverMock();
$ffprobe = $this->getFFProbeMock();
$advancedMedia = new AdvancedMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
$this->assertSame(array(__FILE__, __FILE__), $advancedMedia->getInputs());
}
public function testGetInputsCount()
{
$driver = $this->getFFMpegDriverMock();
$ffprobe = $this->getFFProbeMock();
$advancedMedia = new AdvancedMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
$this->assertEquals(2, $advancedMedia->getInputsCount());
}
public function testFiltersReturnFilters()
{
$driver = $this->getFFMpegDriverMock();
$ffprobe = $this->getFFProbeMock();
$advancedMedia = new AdvancedMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
$this->assertInstanceOf('FFMpeg\Filters\AdvancedMedia\ComplexFilters', $advancedMedia->filters());
}
}

View file

@ -1,35 +0,0 @@
<?php
namespace Tests\FFMpeg\Unit\Media;
use FFMpeg\Media\ComplexMedia;
class ComplexMediaTest extends AbstractMediaTestCase
{
public function testGetInputs()
{
$driver = $this->getFFMpegDriverMock();
$ffprobe = $this->getFFProbeMock();
$complexMedia = new ComplexMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
$this->assertSame(array(__FILE__, __FILE__), $complexMedia->getInputs());
}
public function testGetInputsCount()
{
$driver = $this->getFFMpegDriverMock();
$ffprobe = $this->getFFProbeMock();
$complexMedia = new ComplexMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
$this->assertEquals(2, $complexMedia->getInputsCount());
}
public function testFiltersReturnFilters()
{
$driver = $this->getFFMpegDriverMock();
$ffprobe = $this->getFFProbeMock();
$complexMedia = new ComplexMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
$this->assertInstanceOf('FFMpeg\Filters\ComplexMedia\ComplexFilters', $complexMedia->filters());
}
}