From 111c1534284652d72af7d49361c722f14799a8ca Mon Sep 17 00:00:00 2001 From: Pascal Baljet Date: Wed, 9 Feb 2022 14:32:43 +0100 Subject: [PATCH] [BC] Upgraded dependencies, dropped support for anything below PHP 8.0. (#849) * GitHub actions + style fixes + updated packages * Fixed workflows dir * Support for PHP 8.1 (#1) * Update README.md * Revert some changes from upstream --- .github/workflows/test.yaml | 94 +- .gitignore | 1 + LICENSE | 24 +- ORIGINAL_ALCHEMY_CHANGELOG.md | 64 ++ ORIGINAL_ALCHEMY_LICENSE | 21 + ORIGINAL_ALCHEMY_README.md | 190 ++++ README.md | 2 +- composer.json | 45 +- docs/doctum.php | 15 - docs/generate-docs.sh | 25 - docs/source/API/API/FFMpeg.html | 50 - docs/source/API/API/FFMpeg/Coordinate.html | 59 -- .../API/FFMpeg/Coordinate/AspectRatio.html | 429 --------- .../API/API/FFMpeg/Coordinate/Dimension.html | 223 ----- .../API/API/FFMpeg/Coordinate/FrameRate.html | 123 --- .../API/API/FFMpeg/Coordinate/Point.html | 167 ---- .../API/API/FFMpeg/Coordinate/TimeCode.html | 234 ----- .../FFMpeg/Coordinate/namespace-frame.html | 9 - docs/source/API/API/FFMpeg/Driver.html | 45 - .../API/API/FFMpeg/Driver/FFMpegDriver.html | 125 --- .../API/API/FFMpeg/Driver/FFProbeDriver.html | 125 --- .../API/FFMpeg/Driver/namespace-frame.html | 9 - docs/source/API/API/FFMpeg/Exception.html | 63 -- .../FFMpeg/Exception/ExceptionInterface.html | 37 - .../ExecutableNotFoundException.html | 37 - .../Exception/InvalidArgumentException.html | 38 - .../API/FFMpeg/Exception/LogicException.html | 38 - .../FFMpeg/Exception/RuntimeException.html | 38 - .../API/FFMpeg/Exception/namespace-frame.html | 9 - docs/source/API/API/FFMpeg/FFMpeg.html | 372 -------- .../API/API/FFMpeg/FFMpegServiceProvider.html | 125 --- docs/source/API/API/FFMpeg/FFProbe.html | 736 --------------- .../API/API/FFMpeg/FFProbe/DataMapping.html | 55 -- .../FFProbe/DataMapping/AbstractData.html | 340 ------- .../FFMpeg/FFProbe/DataMapping/Format.html | 339 ------- .../FFMpeg/FFProbe/DataMapping/Stream.html | 460 --------- .../FFProbe/DataMapping/StreamCollection.html | 329 ------- .../FFProbe/DataMapping/namespace-frame.html | 9 - .../source/API/API/FFMpeg/FFProbe/Mapper.html | 107 --- .../API/FFMpeg/FFProbe/MapperInterface.html | 106 --- .../API/API/FFMpeg/FFProbe/OptionsTester.html | 139 --- .../FFProbe/OptionsTesterInterface.html | 93 -- .../API/API/FFMpeg/FFProbe/OutputParser.html | 107 --- .../FFMpeg/FFProbe/OutputParserInterface.html | 106 --- .../API/FFMpeg/FFProbe/namespace-frame.html | 9 - docs/source/API/API/FFMpeg/Filters.html | 48 - docs/source/API/API/FFMpeg/Filters/Audio.html | 58 -- .../Filters/Audio/AudioFilterInterface.html | 135 --- .../FFMpeg/Filters/Audio/AudioFilters.html | 132 --- .../Filters/Audio/AudioResamplableFilter.html | 218 ----- .../FFMpeg/Filters/Audio/SimpleFilter.html | 180 ---- .../FFMpeg/Filters/Audio/namespace-frame.html | 9 - .../API/FFMpeg/Filters/FilterInterface.html | 82 -- .../API/FFMpeg/Filters/FiltersCollection.html | 148 --- docs/source/API/API/FFMpeg/Filters/Frame.html | 53 -- .../Frame/DisplayRatioFixerFilter.html | 161 ---- .../Filters/Frame/FrameFilterInterface.html | 122 --- .../FFMpeg/Filters/Frame/FrameFilters.html | 121 --- .../FFMpeg/Filters/Frame/namespace-frame.html | 9 - docs/source/API/API/FFMpeg/Filters/Video.html | 82 -- .../API/FFMpeg/Filters/Video/ClipFilter.html | 262 ------ .../FFMpeg/Filters/Video/CustomFilter.html | 178 ---- .../FFMpeg/Filters/Video/FrameRateFilter.html | 267 ------ .../FFMpeg/Filters/Video/ResizeFilter.html | 343 ------- .../FFMpeg/Filters/Video/RotateFilter.html | 250 ----- .../Filters/Video/SynchronizeFilter.html | 179 ---- .../Filters/Video/VideoFilterInterface.html | 135 --- .../FFMpeg/Filters/Video/VideoFilters.html | 474 ---------- .../FFMpeg/Filters/Video/WatermarkFilter.html | 186 ---- .../FFMpeg/Filters/Video/namespace-frame.html | 9 - .../API/FFMpeg/Filters/namespace-frame.html | 9 - docs/source/API/API/FFMpeg/Format.html | 61 -- docs/source/API/API/FFMpeg/Format/Audio.html | 60 -- .../API/API/FFMpeg/Format/Audio/Aac.html | 498 ---------- .../API/FFMpeg/Format/Audio/DefaultAudio.html | 430 --------- .../API/API/FFMpeg/Format/Audio/Flac.html | 498 ---------- .../API/API/FFMpeg/Format/Audio/Mp3.html | 498 ---------- .../API/API/FFMpeg/Format/Audio/Vorbis.html | 498 ---------- .../API/API/FFMpeg/Format/Audio/Wav.html | 498 ---------- .../FFMpeg/Format/Audio/namespace-frame.html | 9 - .../API/API/FFMpeg/Format/AudioInterface.html | 263 ------ .../API/FFMpeg/Format/FormatInterface.html | 118 --- .../API/API/FFMpeg/Format/FrameInterface.html | 119 --- .../API/FFMpeg/Format/ProgressListener.html | 48 - .../AbstractProgressListener.html | 333 ------- .../AudioProgressListener.html | 369 -------- .../VideoProgressListener.html | 369 -------- .../ProgressListener/namespace-frame.html | 9 - .../FFMpeg/Format/ProgressableInterface.html | 109 --- docs/source/API/API/FFMpeg/Format/Video.html | 59 -- .../API/FFMpeg/Format/Video/DefaultVideo.html | 639 ------------- .../API/API/FFMpeg/Format/Video/Ogg.html | 791 ---------------- .../API/API/FFMpeg/Format/Video/WMV.html | 791 ---------------- .../API/API/FFMpeg/Format/Video/WMV3.html | 791 ---------------- .../API/API/FFMpeg/Format/Video/WebM.html | 791 ---------------- .../API/API/FFMpeg/Format/Video/X264.html | 875 ------------------ .../FFMpeg/Format/Video/namespace-frame.html | 9 - .../API/API/FFMpeg/Format/VideoInterface.html | 461 --------- .../API/FFMpeg/Format/namespace-frame.html | 9 - docs/source/API/API/FFMpeg/Media.html | 68 -- .../API/FFMpeg/Media/AbstractMediaType.html | 397 -------- .../FFMpeg/Media/AbstractStreamableMedia.html | 472 ---------- docs/source/API/API/FFMpeg/Media/Audio.html | 681 -------------- docs/source/API/API/FFMpeg/Media/Frame.html | 621 ------------- .../API/FFMpeg/Media/MediaTypeInterface.html | 110 --- docs/source/API/API/FFMpeg/Media/Video.html | 665 ------------- .../source/API/API/FFMpeg/Media/Waveform.html | 621 ------------- .../API/API/FFMpeg/Media/namespace-frame.html | 9 - .../API/API/FFMpeg/namespace-frame.html | 9 - docs/source/API/API/PROJECT_VERSION | 1 - docs/source/API/API/SAMI_VERSION | 1 - docs/source/API/API/classes-frame.html | 9 - docs/source/API/API/classes.html | 638 ------------- docs/source/API/API/css/main.css | 214 ----- docs/source/API/API/css/panel.css | 427 --------- docs/source/API/API/css/reset.css | 53 -- docs/source/API/API/doc-index.html | 511 ---------- docs/source/API/API/i/arrows.png | Bin 477 -> 0 bytes docs/source/API/API/i/loader.gif | Bin 9427 -> 0 bytes docs/source/API/API/i/results_bg.png | Bin 696 -> 0 bytes docs/source/API/API/i/tree_bg.png | Bin 207 -> 0 bytes docs/source/API/API/index.html | 21 - docs/source/API/API/interfaces.html | 130 --- docs/source/API/API/js/jquery-1.3.2.min.js | 19 - docs/source/API/API/js/permalink.js | 17 - docs/source/API/API/js/searchdoc.js | 651 ------------- docs/source/API/API/namespaces-frame.html | 9 - docs/source/API/API/namespaces.html | 77 -- docs/source/API/API/opensearch.xml | 0 docs/source/API/API/panel.html | 71 -- docs/source/API/API/renderer.index | 1 - docs/source/API/API/search_index.js | 7 - docs/source/API/API/stylesheet.css | 212 ----- docs/source/API/API/traits.html | 32 - docs/source/API/API/tree.js | 86 -- phpunit.xml.dist | 25 +- src/Alchemy/BinaryDriver/AbstractBinary.php | 218 +++++ .../BinaryDriver/BinaryDriverTestCase.php | 77 ++ src/Alchemy/BinaryDriver/BinaryInterface.php | 67 ++ src/Alchemy/BinaryDriver/Configuration.php | 109 +++ .../ConfigurationAwareInterface.php | 29 + .../BinaryDriver/ConfigurationInterface.php | 58 ++ .../Exception/ExceptionInterface.php | 16 + .../Exception/ExecutableNotFoundException.php | 16 + .../Exception/ExecutionFailureException.php | 37 + .../Exception/InvalidArgumentException.php | 16 + .../BinaryDriver/Listeners/DebugListener.php | 58 ++ .../Listeners/ListenerInterface.php | 32 + .../BinaryDriver/Listeners/Listeners.php | 88 ++ .../BinaryDriver/ProcessBuilderFactory.php | 186 ++++ .../ProcessBuilderFactoryAwareInterface.php | 29 + .../ProcessBuilderFactoryInterface.php | 65 ++ src/Alchemy/BinaryDriver/ProcessRunner.php | 107 +++ .../ProcessRunnerAwareInterface.php | 29 + .../BinaryDriver/ProcessRunnerInterface.php | 33 + src/FFMpeg/Coordinate/AspectRatio.php | 59 +- src/FFMpeg/Coordinate/Dimension.php | 2 +- src/FFMpeg/Coordinate/Point.php | 4 +- src/FFMpeg/Coordinate/TimeCode.php | 17 +- src/FFMpeg/Driver/FFMpegDriver.php | 5 +- src/FFMpeg/Driver/FFProbeDriver.php | 2 +- src/FFMpeg/FFMpeg.php | 8 +- src/FFMpeg/FFMpegServiceProvider.php | 67 -- src/FFMpeg/FFProbe.php | 33 +- .../FFProbe/DataMapping/AbstractData.php | 10 +- src/FFMpeg/FFProbe/DataMapping/Stream.php | 23 +- .../FFProbe/DataMapping/StreamCollection.php | 14 +- src/FFMpeg/FFProbe/Mapper.php | 8 +- src/FFMpeg/FFProbe/OptionsTester.php | 2 +- src/FFMpeg/FFProbe/OutputParser.php | 30 +- .../Filters/AdvancedMedia/ANullSrcFilter.php | 8 +- .../AdvancedMedia/AbstractComplexFilter.php | 10 +- .../AdvancedMedia/ComplexCompatibleFilter.php | 4 +- .../AdvancedMedia/ComplexFilterContainer.php | 5 +- .../Filters/AdvancedMedia/ComplexFilters.php | 35 +- .../AdvancedMedia/CustomComplexFilter.php | 2 +- .../Filters/AdvancedMedia/SineFilter.php | 12 +- .../Filters/AdvancedMedia/TestSrcFilter.php | 36 +- .../Filters/AdvancedMedia/XStackFilter.php | 23 +- .../Filters/Audio/AddMetadataFilter.php | 61 +- src/FFMpeg/Filters/Audio/AudioClipFilter.php | 73 +- .../Filters/Audio/AudioFilterInterface.php | 3 - src/FFMpeg/Filters/Audio/AudioFilters.php | 42 +- .../Filters/Audio/AudioResamplableFilter.php | 5 +- src/FFMpeg/Filters/Audio/CustomFilter.php | 5 +- src/FFMpeg/Filters/Audio/SimpleFilter.php | 2 +- src/FFMpeg/Filters/FiltersCollection.php | 14 +- .../Filters/Frame/CustomFrameFilter.php | 6 +- .../Filters/Frame/DisplayRatioFixerFilter.php | 5 +- src/FFMpeg/Filters/Frame/FrameFilters.php | 4 +- src/FFMpeg/Filters/Video/ClipFilter.php | 10 +- src/FFMpeg/Filters/Video/CropFilter.php | 9 +- src/FFMpeg/Filters/Video/CustomFilter.php | 5 +- .../Video/ExtractMultipleFramesFilter.php | 79 +- src/FFMpeg/Filters/Video/FrameRateFilter.php | 8 +- src/FFMpeg/Filters/Video/PadFilter.php | 10 +- src/FFMpeg/Filters/Video/ResizeFilter.php | 16 +- src/FFMpeg/Filters/Video/RotateFilter.php | 12 +- .../Filters/Video/SynchronizeFilter.php | 2 +- .../Filters/Video/VideoFilterInterface.php | 3 - src/FFMpeg/Filters/Video/VideoFilters.php | 34 +- src/FFMpeg/Filters/Video/WatermarkFilter.php | 12 +- .../Waveform/WaveformDownmixFilter.php | 12 +- src/FFMpeg/Format/Audio/Aac.php | 4 +- src/FFMpeg/Format/Audio/DefaultAudio.php | 27 +- src/FFMpeg/Format/Audio/Flac.php | 4 +- src/FFMpeg/Format/Audio/Mp3.php | 4 +- src/FFMpeg/Format/Audio/Vorbis.php | 6 +- src/FFMpeg/Format/Audio/Wav.php | 4 +- src/FFMpeg/Format/AudioInterface.php | 1 + src/FFMpeg/Format/FormatInterface.php | 1 + .../AbstractProgressListener.php | 47 +- .../AudioProgressListener.php | 2 +- .../VideoProgressListener.php | 2 +- src/FFMpeg/Format/ProgressableInterface.php | 8 +- src/FFMpeg/Format/Video/DefaultVideo.php | 37 +- src/FFMpeg/Format/Video/Ogg.php | 6 +- src/FFMpeg/Format/Video/WMV.php | 6 +- src/FFMpeg/Format/Video/WMV3.php | 6 +- src/FFMpeg/Format/Video/WebM.php | 8 +- src/FFMpeg/Format/Video/X264.php | 9 +- src/FFMpeg/Format/VideoInterface.php | 2 +- src/FFMpeg/Media/AbstractMediaType.php | 6 - src/FFMpeg/Media/AbstractVideo.php | 87 +- src/FFMpeg/Media/AdvancedMedia.php | 108 +-- src/FFMpeg/Media/Audio.php | 49 +- src/FFMpeg/Media/Clip.php | 8 +- src/FFMpeg/Media/Concat.php | 71 +- src/FFMpeg/Media/Frame.php | 43 +- src/FFMpeg/Media/Gif.php | 26 +- src/FFMpeg/Media/Video.php | 17 +- src/FFMpeg/Media/Waveform.php | 34 +- .../BinaryDriver/AbstractBinaryTest.php | 300 ++++++ .../AbstractProcessBuilderFactoryTest.php | 98 ++ .../BinaryDriver/ConfigurationTest.php | 78 ++ .../ExecutionFailureExceptionTest.php | 33 + .../BinaryDriver/LTSProcessBuilder.php | 54 ++ .../LTSProcessBuilderFactoryTest.php | 28 + .../Listeners/DebugListenerTest.php | 34 + .../BinaryDriver/Listeners/ListenersTest.php | 93 ++ .../NONLTSProcessBuilderFactoryTest.php | 15 + .../BinaryDriver/ProcessRunnerTest.php | 208 +++++ tests/BaseTestCase.php | 63 -- tests/FFMpeg/BaseTestCase.php | 13 + .../Functional/AdvancedMediaTest.php | 166 ++-- .../Functional/AudioConcatenationTest.php | 9 +- tests/{ => FFMpeg}/Functional/FFProbeTest.php | 7 +- .../Functional/FunctionalTestCase.php | 4 +- .../Functional/VideoTranscodeTest.php | 36 +- .../Functional/output/.placeholder | 0 .../Unit/Coordinate/AspectRatioTest.php | 83 ++ .../Unit/Coordinate/DimensionTest.php | 20 +- .../Unit/Coordinate/FrameRateTest.php | 8 +- .../Unit/Coordinate/PointTest.php | 8 +- .../Unit/Coordinate/TimeCodeTest.php | 36 +- .../Unit/Driver/FFMpegDriverTest.php | 10 +- .../Unit/Driver/FFProbeDriverTest.php | 10 +- tests/{ => FFMpeg}/Unit/FFMpegTest.php | 10 +- .../FFProbe/DataMapping/AbstractDataTest.php | 14 +- .../DataMapping/StreamCollectionTest.php | 22 +- .../Unit/FFProbe/DataMapping/StreamTest.php | 82 +- .../{ => FFMpeg}/Unit/FFProbe/MapperTest.php | 18 +- .../Unit/FFProbe/OptionsTesterTest.php | 12 +- .../Unit/FFProbe/OutputParserTest.php | 20 +- tests/{ => FFMpeg}/Unit/FFProbeTest.php | 68 +- .../Unit/Filters/Audio/AudioClipTest.php | 21 +- .../Unit/Filters/Audio/AudioFiltersTest.php | 0 .../Unit/Filters/Audio/AudioMetadataTest.php | 12 +- .../Audio/AudioResamplableFilterTest.php | 2 +- .../Unit/Filters/Audio/CustomFilterTest.php | 4 +- .../Unit/Filters/FiltersCollectionTest.php | 24 +- .../Filters/Frame/CustomFrameFilterTest.php | 2 +- .../Frame/DisplayRatioFixerFilterTest.php | 14 +- .../Unit/Filters/Frame/FrameFiltersTest.php | 2 +- .../Unit/Filters/Video/CropFilterTest.php | 12 +- .../Unit/Filters/Video/CustomFilterTest.php | 4 +- .../Video/ExtractMultipleFramesFilterTest.php | 73 ++ .../Filters/Video/FrameRateFilterTest.php | 6 +- .../Unit/Filters/Video/PadFilterTest.php | 44 + .../Unit/Filters/Video/ResizeFilterTest.php | 75 ++ .../Unit/Filters/Video/RotateFilterTest.php | 22 +- .../Filters/Video/SynchronizeFilterTest.php | 4 +- .../Unit/Filters/Video/VideoFiltersTest.php | 16 +- .../Filters/Video/WatermarkFilterTest.php | 62 ++ .../Waveform/WaveformDownmixFilterTest.php | 15 +- .../Filters/Waveform/WaveformFiltersTest.php | 2 +- .../Unit/Format/Audio/AacTest.php | 0 .../Unit/Format/Audio/AudioTestCase.php | 2 +- .../Unit/Format/Audio/FlacTest.php | 0 .../Unit/Format/Audio/Mp3Test.php | 0 .../Unit/Format/Audio/VorbisTest.php | 0 .../Unit/Format/Audio/WavTest.php | 0 .../AudioProgressListenerTest.php | 48 +- .../VideoProgressListenerTest.php | 55 +- .../Format/Video/InitialParametersTest.php | 4 +- .../Unit/Format/Video/OggTest.php | 0 .../Unit/Format/Video/VideoTestCase.php | 0 .../Unit/Format/Video/WMV3Test.php | 0 .../Unit/Format/Video/WMVTest.php | 0 .../Unit/Format/Video/WebMTest.php | 0 .../Unit/Format/Video/X264Test.php | 0 .../Unit/Media/AbstractMediaTestCase.php | 0 .../Unit/Media/AbstractStreamableTestCase.php | 0 .../Unit/Media/AdvancedMediaTest.php | 8 +- tests/{ => FFMpeg}/Unit/Media/AudioProg.php | 2 +- tests/{ => FFMpeg}/Unit/Media/AudioTest.php | 128 ++- tests/{ => FFMpeg}/Unit/Media/ClipTest.php | 26 +- tests/{ => FFMpeg}/Unit/Media/ConcatTest.php | 66 +- tests/{ => FFMpeg}/Unit/Media/FrameTest.php | 43 +- tests/{ => FFMpeg}/Unit/Media/GifTest.php | 26 +- tests/{ => FFMpeg}/Unit/Media/Prog.php | 0 tests/{ => FFMpeg}/Unit/Media/VideoTest.php | 352 ++++--- .../{ => FFMpeg}/Unit/Media/WaveformTest.php | 15 +- tests/{ => FFMpeg}/Unit/TestCase.php | 2 +- .../files/02_-_Favorite_Secrets.mp3 | Bin tests/{ => FFMpeg}/files/Audio.mp3 | Bin .../files/Jahzzar_-_05_-_Siesta.mp3 | Bin tests/{ => FFMpeg}/files/Test.ogv | Bin tests/{ => FFMpeg}/files/WrongFile.mp4 | Bin tests/{ => FFMpeg}/files/concat-list.txt | 0 tests/{ => FFMpeg}/files/portrait.MOV | Bin tests/{ => FFMpeg}/files/sample.3gp | Bin tests/{ => FFMpeg}/files/watermark.png | Bin tests/{ => FFMpeg}/fixtures/ffprobe/help.raw | 0 .../fixtures/ffprobe/show_format.json | 0 .../fixtures/ffprobe/show_format.raw | 0 .../fixtures/ffprobe/show_streams.json | 0 .../fixtures/ffprobe/show_streams.raw | 0 tests/Unit/Coordinate/AspectRatioTest.php | 83 -- tests/Unit/FFMpegServiceProviderTest.php | 76 -- .../Video/ExtractMultipleFramesFilterTest.php | 72 -- tests/Unit/Filters/Video/PadFilterTest.php | 44 - tests/Unit/Filters/Video/ResizeFilterTest.php | 75 -- .../Filters/Video/WatermarkFilterTest.php | 63 -- tests/bootstrap.php | 1 + 335 files changed, 4394 insertions(+), 28116 deletions(-) create mode 100644 ORIGINAL_ALCHEMY_CHANGELOG.md create mode 100644 ORIGINAL_ALCHEMY_LICENSE create mode 100644 ORIGINAL_ALCHEMY_README.md delete mode 100644 docs/doctum.php delete mode 100755 docs/generate-docs.sh delete mode 100644 docs/source/API/API/FFMpeg.html delete mode 100644 docs/source/API/API/FFMpeg/Coordinate.html delete mode 100644 docs/source/API/API/FFMpeg/Coordinate/AspectRatio.html delete mode 100644 docs/source/API/API/FFMpeg/Coordinate/Dimension.html delete mode 100644 docs/source/API/API/FFMpeg/Coordinate/FrameRate.html delete mode 100644 docs/source/API/API/FFMpeg/Coordinate/Point.html delete mode 100644 docs/source/API/API/FFMpeg/Coordinate/TimeCode.html delete mode 100644 docs/source/API/API/FFMpeg/Coordinate/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Driver.html delete mode 100644 docs/source/API/API/FFMpeg/Driver/FFMpegDriver.html delete mode 100644 docs/source/API/API/FFMpeg/Driver/FFProbeDriver.html delete mode 100644 docs/source/API/API/FFMpeg/Driver/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Exception.html delete mode 100644 docs/source/API/API/FFMpeg/Exception/ExceptionInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Exception/ExecutableNotFoundException.html delete mode 100644 docs/source/API/API/FFMpeg/Exception/InvalidArgumentException.html delete mode 100644 docs/source/API/API/FFMpeg/Exception/LogicException.html delete mode 100644 docs/source/API/API/FFMpeg/Exception/RuntimeException.html delete mode 100644 docs/source/API/API/FFMpeg/Exception/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/FFMpeg.html delete mode 100644 docs/source/API/API/FFMpeg/FFMpegServiceProvider.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/DataMapping.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/DataMapping/AbstractData.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/DataMapping/Format.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/DataMapping/Stream.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/DataMapping/StreamCollection.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/DataMapping/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/Mapper.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/MapperInterface.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/OptionsTester.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/OptionsTesterInterface.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/OutputParser.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/OutputParserInterface.html delete mode 100644 docs/source/API/API/FFMpeg/FFProbe/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Filters.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Audio.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Audio/AudioFilterInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Audio/AudioFilters.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Audio/AudioResamplableFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Audio/SimpleFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Audio/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/FilterInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/FiltersCollection.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Frame.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Frame/FrameFilterInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Frame/FrameFilters.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Frame/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/ClipFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/CustomFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/FrameRateFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/ResizeFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/RotateFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/SynchronizeFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/VideoFilterInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/VideoFilters.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/WatermarkFilter.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/Video/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Filters/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Format.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio/Aac.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio/DefaultAudio.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio/Flac.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio/Mp3.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio/Vorbis.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio/Wav.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Audio/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Format/AudioInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Format/FormatInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Format/FrameInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Format/ProgressListener.html delete mode 100644 docs/source/API/API/FFMpeg/Format/ProgressListener/AbstractProgressListener.html delete mode 100644 docs/source/API/API/FFMpeg/Format/ProgressListener/AudioProgressListener.html delete mode 100644 docs/source/API/API/FFMpeg/Format/ProgressListener/VideoProgressListener.html delete mode 100644 docs/source/API/API/FFMpeg/Format/ProgressListener/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Format/ProgressableInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video/DefaultVideo.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video/Ogg.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video/WMV.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video/WMV3.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video/WebM.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video/X264.html delete mode 100644 docs/source/API/API/FFMpeg/Format/Video/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Format/VideoInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Format/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/Media.html delete mode 100644 docs/source/API/API/FFMpeg/Media/AbstractMediaType.html delete mode 100644 docs/source/API/API/FFMpeg/Media/AbstractStreamableMedia.html delete mode 100644 docs/source/API/API/FFMpeg/Media/Audio.html delete mode 100644 docs/source/API/API/FFMpeg/Media/Frame.html delete mode 100644 docs/source/API/API/FFMpeg/Media/MediaTypeInterface.html delete mode 100644 docs/source/API/API/FFMpeg/Media/Video.html delete mode 100644 docs/source/API/API/FFMpeg/Media/Waveform.html delete mode 100644 docs/source/API/API/FFMpeg/Media/namespace-frame.html delete mode 100644 docs/source/API/API/FFMpeg/namespace-frame.html delete mode 100644 docs/source/API/API/PROJECT_VERSION delete mode 100644 docs/source/API/API/SAMI_VERSION delete mode 100644 docs/source/API/API/classes-frame.html delete mode 100644 docs/source/API/API/classes.html delete mode 100644 docs/source/API/API/css/main.css delete mode 100644 docs/source/API/API/css/panel.css delete mode 100644 docs/source/API/API/css/reset.css delete mode 100644 docs/source/API/API/doc-index.html delete mode 100644 docs/source/API/API/i/arrows.png delete mode 100644 docs/source/API/API/i/loader.gif delete mode 100644 docs/source/API/API/i/results_bg.png delete mode 100644 docs/source/API/API/i/tree_bg.png delete mode 100644 docs/source/API/API/index.html delete mode 100644 docs/source/API/API/interfaces.html delete mode 100644 docs/source/API/API/js/jquery-1.3.2.min.js delete mode 100644 docs/source/API/API/js/permalink.js delete mode 100644 docs/source/API/API/js/searchdoc.js delete mode 100644 docs/source/API/API/namespaces-frame.html delete mode 100644 docs/source/API/API/namespaces.html delete mode 100644 docs/source/API/API/opensearch.xml delete mode 100644 docs/source/API/API/panel.html delete mode 100644 docs/source/API/API/renderer.index delete mode 100644 docs/source/API/API/search_index.js delete mode 100644 docs/source/API/API/stylesheet.css delete mode 100644 docs/source/API/API/traits.html delete mode 100644 docs/source/API/API/tree.js create mode 100644 src/Alchemy/BinaryDriver/AbstractBinary.php create mode 100644 src/Alchemy/BinaryDriver/BinaryDriverTestCase.php create mode 100644 src/Alchemy/BinaryDriver/BinaryInterface.php create mode 100644 src/Alchemy/BinaryDriver/Configuration.php create mode 100644 src/Alchemy/BinaryDriver/ConfigurationAwareInterface.php create mode 100644 src/Alchemy/BinaryDriver/ConfigurationInterface.php create mode 100644 src/Alchemy/BinaryDriver/Exception/ExceptionInterface.php create mode 100644 src/Alchemy/BinaryDriver/Exception/ExecutableNotFoundException.php create mode 100644 src/Alchemy/BinaryDriver/Exception/ExecutionFailureException.php create mode 100644 src/Alchemy/BinaryDriver/Exception/InvalidArgumentException.php create mode 100644 src/Alchemy/BinaryDriver/Listeners/DebugListener.php create mode 100644 src/Alchemy/BinaryDriver/Listeners/ListenerInterface.php create mode 100644 src/Alchemy/BinaryDriver/Listeners/Listeners.php create mode 100644 src/Alchemy/BinaryDriver/ProcessBuilderFactory.php create mode 100644 src/Alchemy/BinaryDriver/ProcessBuilderFactoryAwareInterface.php create mode 100644 src/Alchemy/BinaryDriver/ProcessBuilderFactoryInterface.php create mode 100644 src/Alchemy/BinaryDriver/ProcessRunner.php create mode 100644 src/Alchemy/BinaryDriver/ProcessRunnerAwareInterface.php create mode 100644 src/Alchemy/BinaryDriver/ProcessRunnerInterface.php delete mode 100644 src/FFMpeg/FFMpegServiceProvider.php create mode 100644 tests/Alchemy/BinaryDriver/AbstractBinaryTest.php create mode 100644 tests/Alchemy/BinaryDriver/AbstractProcessBuilderFactoryTest.php create mode 100644 tests/Alchemy/BinaryDriver/ConfigurationTest.php create mode 100644 tests/Alchemy/BinaryDriver/Exceptions/ExecutionFailureExceptionTest.php create mode 100644 tests/Alchemy/BinaryDriver/LTSProcessBuilder.php create mode 100644 tests/Alchemy/BinaryDriver/LTSProcessBuilderFactoryTest.php create mode 100644 tests/Alchemy/BinaryDriver/Listeners/DebugListenerTest.php create mode 100644 tests/Alchemy/BinaryDriver/Listeners/ListenersTest.php create mode 100644 tests/Alchemy/BinaryDriver/NONLTSProcessBuilderFactoryTest.php create mode 100644 tests/Alchemy/BinaryDriver/ProcessRunnerTest.php delete mode 100644 tests/BaseTestCase.php create mode 100644 tests/FFMpeg/BaseTestCase.php rename tests/{ => FFMpeg}/Functional/AdvancedMediaTest.php (64%) rename tests/{ => FFMpeg}/Functional/AudioConcatenationTest.php (79%) rename tests/{ => FFMpeg}/Functional/FFProbeTest.php (81%) rename tests/{ => FFMpeg}/Functional/FunctionalTestCase.php (63%) rename tests/{ => FFMpeg}/Functional/VideoTranscodeTest.php (76%) rename tests/{ => FFMpeg}/Functional/output/.placeholder (100%) create mode 100644 tests/FFMpeg/Unit/Coordinate/AspectRatioTest.php rename tests/{ => FFMpeg}/Unit/Coordinate/DimensionTest.php (75%) rename tests/{ => FFMpeg}/Unit/Coordinate/FrameRateTest.php (88%) rename tests/{ => FFMpeg}/Unit/Coordinate/PointTest.php (71%) rename tests/{ => FFMpeg}/Unit/Coordinate/TimeCodeTest.php (57%) rename tests/{ => FFMpeg}/Unit/Driver/FFMpegDriverTest.php (83%) rename tests/{ => FFMpeg}/Unit/Driver/FFProbeDriverTest.php (84%) rename tests/{ => FFMpeg}/Unit/FFMpegTest.php (92%) rename tests/{ => FFMpeg}/Unit/FFProbe/DataMapping/AbstractDataTest.php (66%) rename tests/{ => FFMpeg}/Unit/FFProbe/DataMapping/StreamCollectionTest.php (76%) rename tests/{ => FFMpeg}/Unit/FFProbe/DataMapping/StreamTest.php (64%) rename tests/{ => FFMpeg}/Unit/FFProbe/MapperTest.php (62%) rename tests/{ => FFMpeg}/Unit/FFProbe/OptionsTesterTest.php (93%) rename tests/{ => FFMpeg}/Unit/FFProbe/OutputParserTest.php (58%) rename tests/{ => FFMpeg}/Unit/FFProbeTest.php (78%) rename tests/{ => FFMpeg}/Unit/Filters/Audio/AudioClipTest.php (73%) rename tests/{ => FFMpeg}/Unit/Filters/Audio/AudioFiltersTest.php (100%) rename tests/{ => FFMpeg}/Unit/Filters/Audio/AudioMetadataTest.php (69%) rename tests/{ => FFMpeg}/Unit/Filters/Audio/AudioResamplableFilterTest.php (86%) rename tests/{ => FFMpeg}/Unit/Filters/Audio/CustomFilterTest.php (68%) rename tests/{ => FFMpeg}/Unit/Filters/FiltersCollectionTest.php (71%) rename tests/{ => FFMpeg}/Unit/Filters/Frame/CustomFrameFilterTest.php (76%) rename tests/{ => FFMpeg}/Unit/Filters/Frame/DisplayRatioFixerFilterTest.php (75%) rename tests/{ => FFMpeg}/Unit/Filters/Frame/FrameFiltersTest.php (100%) rename tests/{ => FFMpeg}/Unit/Filters/Video/CropFilterTest.php (75%) rename tests/{ => FFMpeg}/Unit/Filters/Video/CustomFilterTest.php (68%) create mode 100644 tests/FFMpeg/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php rename tests/{ => FFMpeg}/Unit/Filters/Video/FrameRateFilterTest.php (91%) create mode 100644 tests/FFMpeg/Unit/Filters/Video/PadFilterTest.php create mode 100644 tests/FFMpeg/Unit/Filters/Video/ResizeFilterTest.php rename tests/{ => FFMpeg}/Unit/Filters/Video/RotateFilterTest.php (72%) rename tests/{ => FFMpeg}/Unit/Filters/Video/SynchronizeFilterTest.php (76%) rename tests/{ => FFMpeg}/Unit/Filters/Video/VideoFiltersTest.php (88%) create mode 100644 tests/FFMpeg/Unit/Filters/Video/WatermarkFilterTest.php rename tests/{ => FFMpeg}/Unit/Filters/Waveform/WaveformDownmixFilterTest.php (65%) rename tests/{ => FFMpeg}/Unit/Filters/Waveform/WaveformFiltersTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Audio/AacTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Audio/AudioTestCase.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Audio/FlacTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Audio/Mp3Test.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Audio/VorbisTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Audio/WavTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/ProgressListener/AudioProgressListenerTest.php (81%) rename tests/{ => FFMpeg}/Unit/Format/ProgressListener/VideoProgressListenerTest.php (83%) rename tests/{ => FFMpeg}/Unit/Format/Video/InitialParametersTest.php (61%) rename tests/{ => FFMpeg}/Unit/Format/Video/OggTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Video/VideoTestCase.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Video/WMV3Test.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Video/WMVTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Video/WebMTest.php (100%) rename tests/{ => FFMpeg}/Unit/Format/Video/X264Test.php (100%) rename tests/{ => FFMpeg}/Unit/Media/AbstractMediaTestCase.php (100%) rename tests/{ => FFMpeg}/Unit/Media/AbstractStreamableTestCase.php (100%) rename tests/{ => FFMpeg}/Unit/Media/AdvancedMediaTest.php (67%) rename tests/{ => FFMpeg}/Unit/Media/AudioProg.php (100%) rename tests/{ => FFMpeg}/Unit/Media/AudioTest.php (79%) rename tests/{ => FFMpeg}/Unit/Media/ClipTest.php (81%) rename tests/{ => FFMpeg}/Unit/Media/ConcatTest.php (74%) rename tests/{ => FFMpeg}/Unit/Media/FrameTest.php (80%) rename tests/{ => FFMpeg}/Unit/Media/GifTest.php (92%) rename tests/{ => FFMpeg}/Unit/Media/Prog.php (100%) rename tests/{ => FFMpeg}/Unit/Media/VideoTest.php (66%) rename tests/{ => FFMpeg}/Unit/Media/WaveformTest.php (91%) rename tests/{ => FFMpeg}/Unit/TestCase.php (98%) rename tests/{ => FFMpeg}/files/02_-_Favorite_Secrets.mp3 (100%) rename tests/{ => FFMpeg}/files/Audio.mp3 (100%) rename tests/{ => FFMpeg}/files/Jahzzar_-_05_-_Siesta.mp3 (100%) rename tests/{ => FFMpeg}/files/Test.ogv (100%) rename tests/{ => FFMpeg}/files/WrongFile.mp4 (100%) rename tests/{ => FFMpeg}/files/concat-list.txt (100%) rename tests/{ => FFMpeg}/files/portrait.MOV (100%) rename tests/{ => FFMpeg}/files/sample.3gp (100%) rename tests/{ => FFMpeg}/files/watermark.png (100%) rename tests/{ => FFMpeg}/fixtures/ffprobe/help.raw (100%) rename tests/{ => FFMpeg}/fixtures/ffprobe/show_format.json (100%) rename tests/{ => FFMpeg}/fixtures/ffprobe/show_format.raw (100%) rename tests/{ => FFMpeg}/fixtures/ffprobe/show_streams.json (100%) rename tests/{ => FFMpeg}/fixtures/ffprobe/show_streams.raw (100%) delete mode 100644 tests/Unit/Coordinate/AspectRatioTest.php delete mode 100644 tests/Unit/FFMpegServiceProviderTest.php delete mode 100644 tests/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php delete mode 100644 tests/Unit/Filters/Video/PadFilterTest.php delete mode 100644 tests/Unit/Filters/Video/ResizeFilterTest.php delete mode 100644 tests/Unit/Filters/Video/WatermarkFilterTest.php diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 3f36d28..76475ce 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,66 +1,48 @@ -name: Test +name: run-tests -on: - pull_request: ~ - push: - branches: - - "master" - schedule: - - cron: "0 0 * * *" +on: [push, pull_request] jobs: - test: - name: "PHP ${{ matrix.php-version }} ${{ matrix.dependency-versions }} ${{ matrix.composer-stability }}" - runs-on: ubuntu-latest + test: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + os: [ubuntu-20.04] + php: [8.1, 8.0] + ffmpeg: [5.0, 4.4] + dependency-version: [prefer-lowest, prefer-stable] - env: - PHPUNIT_VERSION: ${{ matrix.phpunit-version }} + name: ${{ matrix.os }} - P${{ matrix.php }} - FF${{ matrix.ffmpeg }} - ${{ matrix.dependency-version }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-20.04] - php-version: [8.1, 8.0, 7.4, 7.3, 7.2, 7.1, 7.0, 5.6, 5.5] - dependency-versions: [prefer-lowest, prefer-stable] - include: - - php-version: 5.5 - phpunit-version: 4 + steps: + - name: Checkout code + uses: actions/checkout@v2 - steps: - - name: Checkout project - uses: actions/checkout@v2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, mysql, mysqli, pdo_mysql, fileinfo + coverage: none - - name: Install and configure PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - tools: composer:v2 - coverage: none + - name: Install FFmpeg + uses: Iamshankhadeep/setup-ffmpeg@ffmpeg-5.0-20220119 + with: + version: ${{ matrix.ffmpeg }} + id: setup-ffmpeg - - name: Install phpunit - if: ${{ matrix.phpunit-version }} - run: | - composer remove symfony/phpunit-bridge --dev - wget -O phpunit "https://phar.phpunit.de/phpunit-${{ matrix.phpunit-version }}.phar" - chmod +x phpunit - composer require "roave/security-advisories" dev-master --no-update + - name: Install dependencies + run: | + composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest - - name: Set composer stability - if: ${{ matrix.composer-stability }} - run: composer config minimum-stability ${{ matrix.composer-stability }} + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ~/.composer/cache/files + key: dependencies-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}-dep-${{ matrix.dependency-version }} - - name: Install composer dependencies - uses: ramsey/composer-install@v1 - with: - dependency-versions: ${{ matrix.dependency-versions }} - - - name: Install ffmpeg - uses: FedericoCarboni/setup-ffmpeg@v1 - - - name: Run tests - run: | - if [ "$PHPUNIT_VERSION" ]; then - ./phpunit --verbose - else - ./vendor/bin/simple-phpunit --verbose - fi; + - name: Execute tests + run: vendor/bin/phpunit + env: + FFMPEG_TEMPORARY_FILES_ROOT: ${{ github.workspace }} diff --git a/.gitignore b/.gitignore index eb02dfe..e69b0e3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ composer.phar composer.lock phpunit.xml .phpunit.result.cache +.php-cs-fixer.cache /tests/Functional/output/output-* /docs/doctum.phar /docs/source/API/API/cache/twig/* diff --git a/LICENSE b/LICENSE index ac8da71..07d4d9f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,21 @@ -PHP-FFmpeg is released with MIT License : +MIT License -Copyright (c) 2012 Alchemy +Copyright (c) 2012-2021 Alchemy Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/ORIGINAL_ALCHEMY_CHANGELOG.md b/ORIGINAL_ALCHEMY_CHANGELOG.md new file mode 100644 index 0000000..f892249 --- /dev/null +++ b/ORIGINAL_ALCHEMY_CHANGELOG.md @@ -0,0 +1,64 @@ +CHANGELOG +--------- +* 1.6.0 (2015-03-02) + * BC Break: bump minimum PHP versions + * Allow use of evenement v2.0 (thanks @patkar for the P/R) + +* 1.5.0 (2013-06-21) + + * BC Break : ConfigurationInterface::get does not throw exceptions anymore + in case the key does not exist. Second argument is a default value to return + in case the key does not exist. + +* 1.4.1 (2013-05-23) + + * Add third parameter to BinaryInterface::command method to pass a listener or + an array of listener that will be registered just the time of the command. + +* 1.4.0 (2013-05-11) + + * Extract process run management to ProcessRunner. + * Add support for process listeners. + * Provides bundled DebugListener. + * Add BinaryInterface::command method. + * BC break : ProcessRunnerInterface::run now takes an SplObjectStorage containing + listeners as second argument. + * BC break : BinaryInterface no longer implements LoggerAwareInterface + as it is now supported by ProcessRunner. + +* 1.3.4 (2013-04-26) + + * Add BinaryDriver::run method. + +* 1.3.3 (2013-04-26) + + * Add BinaryDriver::createProcessMock method. + +* 1.3.2 (2013-04-26) + + * Add BinaryDriverTestCase for testing BinaryDriver implementations. + +* 1.3.1 (2013-04-24) + + * Add timeouts handling + +* 1.3.0 (2013-04-24) + + * Add BinaryInterface and AbstractBinary + +* 1.2.1 (2013-04-24) + + * Add ConfigurationAwareInterface + * Add ProcessBuilderAwareInterface + +* 1.2.0 (2013-04-24) + + * Add BinaryDriver\Configuration + +* 1.1.0 (2013-04-24) + + * Add support for timeouts via `setTimeout` method + +* 1.0.0 (2013-04-23) + + * First stable version. diff --git a/ORIGINAL_ALCHEMY_LICENSE b/ORIGINAL_ALCHEMY_LICENSE new file mode 100644 index 0000000..e7bb314 --- /dev/null +++ b/ORIGINAL_ALCHEMY_LICENSE @@ -0,0 +1,21 @@ +BinaryDriver is released with MIT License : + +Copyright (c) 2013 Alchemy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/ORIGINAL_ALCHEMY_README.md b/ORIGINAL_ALCHEMY_README.md new file mode 100644 index 0000000..05b3a13 --- /dev/null +++ b/ORIGINAL_ALCHEMY_README.md @@ -0,0 +1,190 @@ +# Binary Driver + +Binary-Driver is a set of PHP tools to build binary drivers. + +[![Build Status](https://travis-ci.org/alchemy-fr/BinaryDriver.png?branch=master)](https://travis-ci.org/alchemy-fr/BinaryDriver) + +## Why ? + +You may wonder *Why building a library while I can use `exec` or +[symfony/process](https://github.com/symfony/Process) ?*. + +Here is a simple answer : + + - If you use `exec`, `passthru`, `system`, `proc_open` or any low level process + handling in PHP, you should have a look to [symfony/process](https://github.com/symfony/Process) + component that will provide an OO portable, testable and secure interface to + deal with this. It seems easy at first approach, but if you look at this + component [unit tests](https://github.com/symfony/Process/tree/master/Tests), + you will see that handling process in a simple interface can easily become a + nightmare. + + - If you already use symfony/process, and want to build binary drivers, you + will always have the same common set of methods and objects to configure, log, + debug, and generate processes. + This library is a base to implement any binary driver with this common set of + needs. + +## AbstractBinary + +`AbstractBinary` provides an abstract class to build a binary driver. It implements +`BinaryInterface`. + +Implementation example : + +```php +use Alchemy\BinaryDriver\AbstractBinary; + +class LsDriver extends AbstractBinary +{ + public function getName() + { + return 'ls driver'; + } +} + +$parser = new LsParser(); + +$driver = Driver::load('ls'); +// will return the output of `ls -a -l` +$parser->parse($driver->command(array('-a', '-l'))); +``` + +### Binary detection troubleshooting + +If you are using Nginx with PHP-fpm, executable detection may not work because of an empty `$_ENV['path']`. +To avoid having an empty `PATH` environment variable, add the following line to your `fastcgi_params` +config file (replace `/your/current/path/` with the output of `printenv PATH`) : + +``` +fastcgi_param PATH /your/current/path +``` + +## Logging + +You can log events with a `Psr\Log\LoggerInterface` by passing it in the load +method as second argument : + +```php +$logger = new Monolog\Logger('driver'); +$driver = Driver::load('ls', $logger); +``` + +## Listeners + +You can add custom listeners on processes. +Listeners are built on top of [Evenement](https://github.com/igorw/evenement) +and must implement `Alchemy\BinaryDriver\ListenerInterface`. + +```php +use Symfony\Component\Process\Process; + +class DebugListener extends EventEmitter implements ListenerInterface +{ + public function handle($type, $data) + { + foreach (explode(PHP_EOL, $data) as $line) { + $this->emit($type === Process::ERR ? 'error' : 'out', array($line)); + } + } + + public function forwardedEvents() + { + // forward 'error' events to the BinaryInterface + return array('error'); + } +} + +$listener = new DebugListener(); + +$driver = CustomImplementation::load('php'); + +// adds listener +$driver->listen($listener); + +$driver->on('error', function ($line) { + echo '[ERROR] ' . $line . PHP_EOL; +}); + +// removes listener +$driver->unlisten($listener); +``` + +### Bundled listeners + +The debug listener is a simple listener to catch `stderr` and `stdout` outputs ; +read the implementation for customization. + +```php +use Alchemy\BinaryDriver\Listeners\DebugListener; + +$driver = CustomImplementation::load('php'); +$driver->listen(new DebugListener()); + +$driver->on('debug', function ($line) { + echo $line; +}); +``` + +## ProcessBuilderFactory + +ProcessBuilderFactory ease spawning processes by generating Symfony [Process] +(http://symfony.com/doc/master/components/process.html) objects. + +```php +use Alchemy\BinaryDriver\ProcessBuilderFactory; + +$factory = new ProcessBuilderFactory('/usr/bin/php'); + +// return a Symfony\Component\Process\Process +$process = $factory->create('-v'); + +// echoes '/usr/bin/php' '-v' +echo $process->getCommandLine(); + +$process = $factory->create(array('-r', 'echo "Hello !";')); + +// echoes '/usr/bin/php' '-r' 'echo "Hello !";' +echo $process->getCommandLine(); +``` + +## Configuration + +A simple configuration object, providing an `ArrayAccess` and `IteratorAggregate` +interface. + +```php +use Alchemy\BinaryDriver\Configuration; + +$conf = new Configuration(array('timeout' => 0)); + +echo $conf->get('timeout'); + +if ($conf->has('param')) { + $conf->remove('param'); +} + +$conf->set('timeout', 20); + +$conf->all(); +``` + +Same example using the `ArrayAccess` interface : + +```php +use Alchemy\BinaryDriver\Configuration; + +$conf = new Configuration(array('timeout' => 0)); + +echo $conf['timeout']; + +if (isset($conf['param'])) { + unset($conf['param']); +} + +$conf['timeout'] = 20; +``` + +## License + +This project is released under the MIT license. diff --git a/README.md b/README.md index 58772de..1a79ef1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# php-ffmpeg +# PHP-FFMPEG [![Test](https://github.com/PHP-FFMpeg/PHP-FFMpeg/actions/workflows/test.yaml/badge.svg)](https://github.com/PHP-FFMpeg/PHP-FFMpeg/actions/workflows/test.yaml) diff --git a/composer.json b/composer.json index 8850836..b49c59a 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,16 @@ "name": "php-ffmpeg/php-ffmpeg", "type": "library", "description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg", - "keywords": ["video processing", "video", "audio processing", "audio", "avconv", "ffmpeg", "avprobe", "ffprobe"], + "keywords": [ + "video processing", + "video", + "audio processing", + "audio", + "avconv", + "ffmpeg", + "avprobe", + "ffprobe" + ], "license": "MIT", "authors": [ { @@ -29,35 +38,37 @@ "name": "Jens Hausdorf", "email": "hello@jens-hausdorf.de", "homepage": "https://jens-hausdorf.de" + }, + { + "name": "Pascal Baljet", + "email": "pascal@protone.media", + "homepage": "https://protone.media" } ], "require": { - "php": ">=5.5.9", - "alchemy/binary-driver": "^1.5 || ~2.0.0 || ^5.0", - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "neutron/temporary-filesystem": "^2.1.1 || ^3.0", - "symfony/cache": "^3.1 || ^4.0 || ^5.0 || ^6.0" + "php": "^8.0 || ^8.1", + "evenement/evenement": "^3.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "spatie/temporary-directory": "^2.0", + "symfony/process": "^5.4 || ^6.0", + "symfony/cache": "^5.4 || ^6.0" }, "suggest": { "php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg" }, "require-dev": { - "symfony/phpunit-bridge": "^5.0.4", - "symfony/process": "2.8 || 3.3" + "phpunit/phpunit": "^9.5.10" }, "autoload": { - "psr-0": { - "FFMpeg": "src" + "psr-4": { + "FFMpeg\\": "src/FFMpeg", + "Alchemy\\BinaryDriver\\": "src/Alchemy/BinaryDriver" } }, "autoload-dev": { "psr-4": { - "Tests\\FFMpeg\\": "tests" - } - }, - "extra": { - "branch-alias": { - "dev-master": "0.x-dev" + "Alchemy\\Tests\\BinaryDriver\\": "tests/Alchemy/BinaryDriver", + "Tests\\FFMpeg\\": "tests/FFMpeg" } } -} +} \ No newline at end of file diff --git a/docs/doctum.php b/docs/doctum.php deleted file mode 100644 index 3f0d9be..0000000 --- a/docs/doctum.php +++ /dev/null @@ -1,15 +0,0 @@ -files() - ->name('*.php') - ->in(__DIR__.'/../src/'); - -return new Doctum($iterator, [ - 'title' => 'PHP-FFMpeg API', - 'build_dir' => __DIR__.'/source/API/API', - 'cache_dir' => __DIR__.'/source/API/API/cache', -]); diff --git a/docs/generate-docs.sh b/docs/generate-docs.sh deleted file mode 100755 index c50293c..0000000 --- a/docs/generate-docs.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -e - -SELF_DIR=$(dirname $0) -cd ${SELF_DIR} - -rm -f doctum.phar -rm -f doctum.phar.sha256 - -# Download the latest (5.1.x) release if the file does not exist -# Remove it to update your phar -curl -o doctum.phar https://doctum.long-term.support/releases/5.1/doctum.phar -curl -o doctum.phar.sha256 https://doctum.long-term.support/releases/5.1/doctum.phar.sha256 - -sha256sum --strict --check doctum.phar.sha256 -rm doctum.phar.sha256 - -# You can fetch the latest (5.1.x) version code here: -# https://doctum.long-term.support/releases/5.1/VERSION - - -# Show the version to inform users of the script -php doctum.phar --version -php doctum.phar update --force --ignore-parse-errors doctum.php -v diff --git a/docs/source/API/API/FFMpeg.html b/docs/source/API/API/FFMpeg.html deleted file mode 100644 index 30b55e4..0000000 --- a/docs/source/API/API/FFMpeg.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - FFMpeg | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg

-
-
- - - - - - - - - - - - - -
FFMpeg -
FFMpegServiceProvider -
FFProbe -
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Coordinate.html b/docs/source/API/API/FFMpeg/Coordinate.html deleted file mode 100644 index a26339f..0000000 --- a/docs/source/API/API/FFMpeg/Coordinate.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - FFMpeg\Coordinate | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Coordinate

-
-
- - - - - - - - - - - - - - - - - - - - - -
AspectRatio -
DimensionDimension object, used for manipulating width and height couples
FrameRate -
Point -
TimeCode -
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Coordinate/AspectRatio.html b/docs/source/API/API/FFMpeg/Coordinate/AspectRatio.html deleted file mode 100644 index 732fcdb..0000000 --- a/docs/source/API/API/FFMpeg/Coordinate/AspectRatio.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - - - FFMpeg\Coordinate\AspectRatio | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Coordinate\AspectRatio

-
-
-

class - AspectRatio

- - -

Constants

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AR_4_3 -

-

-

-

-
AR_16_9 -

-

-

-

-
AR_3_2 -

-

-

-

-
AR_5_3 -

-

-

-

-
AR_5_4 -

-

-

-

-
AR_1_1 -

-

-

-

-
AR_1_DOT_85_1 -

-

-

-

-
AR_2_DOT_39_1 -

-

-

-

-
AR_ROTATED_3_4 -

-

-

-

-
AR_ROTATED_9_16 -

-

-

-

-
AR_ROTATED_2_3 -

-

-

-

-
AR_ROTATED_3_5 -

-

-

-

-
AR_ROTATED_4_5 -

-

-

-

-
AR_ROTATED_1_DOT_85 -

-

-

-

-
AR_ROTATED_2_DOT_39 -

-

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($ratio) -

-

-
- float - - getValue() -

Returns the value of the ratio.

-
- Integer - - calculateWidth(Integer $height, Integer $modulus = 1) -

Computes the best width for given height and modulus.

-
- Integer - - calculateHeight(Integer $width, Integer $modulus = 1) -

Computes the best height for given width and modulus.

-
- static AspectRatio - - create(Dimension $dimension, Boolean $forceStandards = true) -

Creates a ratio based on Dimension.

-
- - -

Details

- -

-
at line 61
- public - __construct($ratio) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
$ratio -
- - - - -
-
- -

-
at line 71
- public float - getValue() -

-
-

Returns the value of the ratio.

-

-

-
- -

Return Value

- - - - - - -
float -
- - - -
-
- -

-
at line 84
- public Integer - calculateWidth(Integer $height, Integer $modulus = 1) -

-
-

Computes the best width for given height and modulus.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Integer$height -
Integer$modulus -
- - -

Return Value

- - - - - - -
Integer -
- - - -
-
- -

-
at line 103
- public Integer - calculateHeight(Integer $width, Integer $modulus = 1) -

-
-

Computes the best height for given width and modulus.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Integer$width -
Integer$modulus -
- - -

Return Value

- - - - - - -
Integer -
- - - -
-
- -

-
at line 145
- static public AspectRatio - create(Dimension $dimension, Boolean $forceStandards = true) -

-
-

Creates a ratio based on Dimension.

-

The strategy parameter forces by default to use standardized ratios. If -custom ratio need to be used, disable it.

-
-

Parameters

- - - - - - - - - - - - -
Dimension$dimension -
Boolean$forceStandardsWhether to force or not standard ratios
- - -

Return Value

- - - - - - -
AspectRatio -
- - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Coordinate/Dimension.html b/docs/source/API/API/FFMpeg/Coordinate/Dimension.html deleted file mode 100644 index ec52751..0000000 --- a/docs/source/API/API/FFMpeg/Coordinate/Dimension.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - FFMpeg\Coordinate\Dimension | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Coordinate\Dimension

-
-
-

class - Dimension

- -
-

Dimension object, used for manipulating width and height couples

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(integer $width, integer $height) -

-

-
- integer - - getWidth() -

Returns width.

-
- integer - - getHeight() -

Returns height.

-
- AspectRatio - - getRatio(type $forceStandards = true) -

Returns the ratio.

-
- - -

Details

- -

-
at line 30
- public - __construct(integer $width, integer $height) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
integer$width -
integer$height -
- - - -

Exceptions

- - - - - - -
InvalidArgumentExceptionwhen one of the parameteres is invalid
- - -
-
- -

-
at line 45
- public integer - getWidth() -

-
-

Returns width.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 55
- public integer - getHeight() -

-
-

Returns height.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 67
- public AspectRatio - getRatio(type $forceStandards = true) -

-
-

Returns the ratio.

-

-

-
-

Parameters

- - - - - - - -
type$forceStandardsWhether or not force the use of standards ratios;
- - -

Return Value

- - - - - - -
AspectRatio -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Coordinate/FrameRate.html b/docs/source/API/API/FFMpeg/Coordinate/FrameRate.html deleted file mode 100644 index ac9462a..0000000 --- a/docs/source/API/API/FFMpeg/Coordinate/FrameRate.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - FFMpeg\Coordinate\FrameRate | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Coordinate\FrameRate

-
-
-

class - FrameRate

- - - - -

Methods

- - - - - - - - - - - - -
- - - __construct($value) -

-

-
- float - - getValue() -

-

-
- - -

Details

- -

-
at line 20
- public - __construct($value) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
$value -
- - - - -
-
- -

-
at line 32
- public float - getValue() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
float -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Coordinate/Point.html b/docs/source/API/API/FFMpeg/Coordinate/Point.html deleted file mode 100644 index b908c58..0000000 --- a/docs/source/API/API/FFMpeg/Coordinate/Point.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - FFMpeg\Coordinate\Point | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Coordinate\Point

-
-
-

class - Point

- - - - -

Methods

- - - - - - - - - - - - - - - - - -
- - - __construct($x, $y) -

-

-
- integer - - getX() -

-

-
- integer - - getY() -

-

-
- - -

Details

- -

-
at line 19
- public - __construct($x, $y) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$x -
$y -
- - - - -
-
- -

-
at line 28
- public integer - getX() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 36
- public integer - getY() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Coordinate/TimeCode.html b/docs/source/API/API/FFMpeg/Coordinate/TimeCode.html deleted file mode 100644 index e33e5dc..0000000 --- a/docs/source/API/API/FFMpeg/Coordinate/TimeCode.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - FFMpeg\Coordinate\TimeCode | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Coordinate\TimeCode

-
-
-

class - TimeCode

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($hours, $minutes, $seconds, $frames) -

-

-
- - - __toString() -

-

-
- static TimeCode - - fromString(string $timecode) -

Creates timecode from string.

-
- static TimeCode - - fromSeconds(float $quantity) -

Creates timecode from number of seconds.

-
- - -

Details

- -

-
at line 24
- public - __construct($hours, $minutes, $seconds, $frames) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
$hours -
$minutes -
$seconds -
$frames -
- - - - -
-
- -

-
at line 32
- public - __toString() -

-
-

-

-

-

-
- - - -
-
- -

-
at line 46
- static public TimeCode - fromString(string $timecode) -

-
-

Creates timecode from string.

-

-

-
-

Parameters

- - - - - - - -
string$timecode -
- - -

Return Value

- - - - - - -
TimeCode -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case an invalid timecode is supplied
- - -
-
- -

-
at line 74
- static public TimeCode - fromSeconds(float $quantity) -

-
-

Creates timecode from number of seconds.

-

-

-
-

Parameters

- - - - - - - -
float$quantity -
- - -

Return Value

- - - - - - -
TimeCode -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Coordinate/namespace-frame.html b/docs/source/API/API/FFMpeg/Coordinate/namespace-frame.html deleted file mode 100644 index c5257cf..0000000 --- a/docs/source/API/API/FFMpeg/Coordinate/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Coordinate | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Driver.html b/docs/source/API/API/FFMpeg/Driver.html deleted file mode 100644 index 08ade38..0000000 --- a/docs/source/API/API/FFMpeg/Driver.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - FFMpeg\Driver | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Driver

-
-
- - - - - - - - - -
FFMpegDriver -
FFProbeDriver -
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Driver/FFMpegDriver.html b/docs/source/API/API/FFMpeg/Driver/FFMpegDriver.html deleted file mode 100644 index 16e8d49..0000000 --- a/docs/source/API/API/FFMpeg/Driver/FFMpegDriver.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - FFMpeg\Driver\FFMpegDriver | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Driver\FFMpegDriver

-
-
-

class - FFMpegDriver extends AbstractBinary

- - - - -

Methods

- - - - - - - - - - - - -
- - - getName() -

{@inheritdoc}

-
- static FFMpegDriver - - create(LoggerInterface $logger = null, array|Configuration $configuration = array()) -

Creates an FFMpegDriver.

-
- - -

Details

- -

-
at line 26
- public - getName() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- -

-
at line 39
- static public FFMpegDriver - create(LoggerInterface $logger = null, array|Configuration $configuration = array()) -

-
-

Creates an FFMpegDriver.

-

-

-
-

Parameters

- - - - - - - - - - - - -
LoggerInterface$logger -
array|Configuration$configuration -
- - -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Driver/FFProbeDriver.html b/docs/source/API/API/FFMpeg/Driver/FFProbeDriver.html deleted file mode 100644 index 53b119d..0000000 --- a/docs/source/API/API/FFMpeg/Driver/FFProbeDriver.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - FFMpeg\Driver\FFProbeDriver | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Driver\FFProbeDriver

-
-
-

class - FFProbeDriver extends AbstractBinary

- - - - -

Methods

- - - - - - - - - - - - -
- - - getName() -

{@inheritdoc}

-
- static FFProbeDriver - - create(array|ConfigurationInterface $configuration, LoggerInterface $logger = null) -

Creates an FFProbeDriver.

-
- - -

Details

- -

-
at line 26
- public - getName() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- -

-
at line 39
- static public FFProbeDriver - create(array|ConfigurationInterface $configuration, LoggerInterface $logger = null) -

-
-

Creates an FFProbeDriver.

-

-

-
-

Parameters

- - - - - - - - - - - - -
array|ConfigurationInterface$configuration -
LoggerInterface$logger -
- - -

Return Value

- - - - - - -
FFProbeDriver -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Driver/namespace-frame.html b/docs/source/API/API/FFMpeg/Driver/namespace-frame.html deleted file mode 100644 index e4fff56..0000000 --- a/docs/source/API/API/FFMpeg/Driver/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Driver | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Exception.html b/docs/source/API/API/FFMpeg/Exception.html deleted file mode 100644 index 2746cb0..0000000 --- a/docs/source/API/API/FFMpeg/Exception.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - FFMpeg\Exception | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Exception

-
-
- - - - - - - - - - - - - - - - - -
ExecutableNotFoundException -
InvalidArgumentException -
LogicException -
RuntimeException -
- -

Interfaces

- - - - - -
ExceptionInterface -
- -
- - - diff --git a/docs/source/API/API/FFMpeg/Exception/ExceptionInterface.html b/docs/source/API/API/FFMpeg/Exception/ExceptionInterface.html deleted file mode 100644 index 28f825b..0000000 --- a/docs/source/API/API/FFMpeg/Exception/ExceptionInterface.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - FFMpeg\Exception\ExceptionInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Exception\ExceptionInterface

-
-
-

interface - ExceptionInterface

- - - - -
- - - diff --git a/docs/source/API/API/FFMpeg/Exception/ExecutableNotFoundException.html b/docs/source/API/API/FFMpeg/Exception/ExecutableNotFoundException.html deleted file mode 100644 index 0dd5663..0000000 --- a/docs/source/API/API/FFMpeg/Exception/ExecutableNotFoundException.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - FFMpeg\Exception\ExecutableNotFoundException | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Exception\ExecutableNotFoundException

-
-
-

class - ExecutableNotFoundException extends RuntimeException

- - - - -
- - - diff --git a/docs/source/API/API/FFMpeg/Exception/InvalidArgumentException.html b/docs/source/API/API/FFMpeg/Exception/InvalidArgumentException.html deleted file mode 100644 index a3b0279..0000000 --- a/docs/source/API/API/FFMpeg/Exception/InvalidArgumentException.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - FFMpeg\Exception\InvalidArgumentException | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Exception\InvalidArgumentException

-
-
-

class - InvalidArgumentException extends InvalidArgumentException implements - ExceptionInterface

- - - - -
- - - diff --git a/docs/source/API/API/FFMpeg/Exception/LogicException.html b/docs/source/API/API/FFMpeg/Exception/LogicException.html deleted file mode 100644 index 7d310ca..0000000 --- a/docs/source/API/API/FFMpeg/Exception/LogicException.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - FFMpeg\Exception\LogicException | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Exception\LogicException

-
-
-

class - LogicException extends LogicException implements - ExceptionInterface

- - - - -
- - - diff --git a/docs/source/API/API/FFMpeg/Exception/RuntimeException.html b/docs/source/API/API/FFMpeg/Exception/RuntimeException.html deleted file mode 100644 index ef0bcd5..0000000 --- a/docs/source/API/API/FFMpeg/Exception/RuntimeException.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - FFMpeg\Exception\RuntimeException | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Exception\RuntimeException

-
-
-

class - RuntimeException extends RuntimeException implements - ExceptionInterface

- - - - -
- - - diff --git a/docs/source/API/API/FFMpeg/Exception/namespace-frame.html b/docs/source/API/API/FFMpeg/Exception/namespace-frame.html deleted file mode 100644 index c9102a8..0000000 --- a/docs/source/API/API/FFMpeg/Exception/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Exception | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/FFMpeg.html b/docs/source/API/API/FFMpeg/FFMpeg.html deleted file mode 100644 index a101240..0000000 --- a/docs/source/API/API/FFMpeg/FFMpeg.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - FFMpeg\FFMpeg | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFMpeg

-
-
-

class - FFMpeg

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(FFMpegDriver $ffmpeg, FFProbe $ffprobe) -

-

-
- FFMpeg - - setFFProbe(FFProbe $ffprobe) -

Sets FFProbe.

-
- FFProbe - - getFFProbe() -

Gets FFProbe.

-
- FFMpeg - - setFFMpegDriver(FFMpegDriver $ffmpeg) -

Sets the ffmpeg driver.

-
- FFMpegDriver - - getFFMpegDriver() -

Gets the ffmpeg driver.

-
- Audio|Video - - open(string $pathfile) -

Opens a file in order to be processed.

-
- static FFMpeg - - create(array|ConfigurationInterface $configuration = array(), LoggerInterface $logger = null, FFProbe $probe = null) -

Creates a new FFMpeg instance.

-
- - -

Details

- -

-
at line 29
- public - __construct(FFMpegDriver $ffmpeg, FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
FFMpegDriver$ffmpeg -
FFProbe$ffprobe -
- - - - -
-
- -

-
at line 42
- public FFMpeg - setFFProbe(FFProbe $ffprobe) -

-
-

Sets FFProbe.

-

-

-
-

Parameters

- - - - - - - -
FFProbe$ffprobe -
- - -

Return Value

- - - - - - -
FFMpeg -
- - - -
-
- -

-
at line 54
- public FFProbe - getFFProbe() -

-
-

Gets FFProbe.

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 64
- public FFMpeg - setFFMpegDriver(FFMpegDriver $ffmpeg) -

-
-

Sets the ffmpeg driver.

-

-

-
-

Parameters

- - - - - - - -
FFMpegDriver$ffmpeg -
- - -

Return Value

- - - - - - -
FFMpeg -
- - - -
-
- -

-
at line 76
- public FFMpegDriver - getFFMpegDriver() -

-
-

Gets the ffmpeg driver.

-

-

-
- -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- -

-
at line 90
- public Audio|Video - open(string $pathfile) -

-
-

Opens a file in order to be processed.

-

-

-
-

Parameters

- - - - - - - -
string$pathfileA pathfile
- - -

Return Value

- - - - - - -
Audio|Video -
- - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 114
- static public FFMpeg - create(array|ConfigurationInterface $configuration = array(), LoggerInterface $logger = null, FFProbe $probe = null) -

-
-

Creates a new FFMpeg instance.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
array|ConfigurationInterface$configuration -
LoggerInterface$logger -
FFProbe$probe -
- - -

Return Value

- - - - - - -
FFMpeg -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFMpegServiceProvider.html b/docs/source/API/API/FFMpeg/FFMpegServiceProvider.html deleted file mode 100644 index dc3623d..0000000 --- a/docs/source/API/API/FFMpeg/FFMpegServiceProvider.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - FFMpeg\FFMpegServiceProvider | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFMpegServiceProvider

-
-
-

class - FFMpegServiceProvider implements - ServiceProviderInterface

- - - - -

Methods

- - - - - - - - - - - - -
- - - register(Application $app) -

-

-
- - - boot(Application $app) -

-

-
- - -

Details

- -

-
at line 20
- public - register(Application $app) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Application$app -
- - - - -
-
- -

-
at line 61
- public - boot(Application $app) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Application$app -
- - - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe.html b/docs/source/API/API/FFMpeg/FFProbe.html deleted file mode 100644 index cc44fc4..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe.html +++ /dev/null @@ -1,736 +0,0 @@ - - - - - - FFMpeg\FFProbe | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe

-
-
-

class - FFProbe

- - -

Constants

- - - - - - - - - - -
TYPE_STREAMS -

-

-

-

-
TYPE_FORMAT -

-

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(FFProbeDriver $ffprobe, Cache $cache) -

-

-
- OutputParserInterface - - getParser() -

-

-
- FFProbe - - setParser(OutputParserInterface $parser) -

-

-
- FFProbeDriver - - getFFProbeDriver() -

-

-
- FFProbe - - setFFProbeDriver(FFProbeDriver $ffprobe) -

-

-
- FFProbe - - setOptionsTester(OptionsTesterInterface $tester) -

-

-
- OptionsTesterInterface - - getOptionsTester() -

-

-
- FFProbe - - setCache(Cache $cache) -

-

-
- Cache - - getCache() -

-

-
- MapperInterface - - getMapper() -

-

-
- FFProbe - - setMapper(MapperInterface $mapper) -

-

-
- Format - - format(string $pathfile) -

-

-
- StreamCollection - - streams(string $pathfile) -

-

-
- static FFProbe - - create(array|ConfigurationInterface $configuration = array(), LoggerInterface $logger = null, Cache $cache = null) -

-

-
- - -

Details

- -

-
at line 47
- public - __construct(FFProbeDriver $ffprobe, Cache $cache) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
FFProbeDriver$ffprobe -
Cache$cache -
- - - - -
-
- -

-
at line 59
- public OutputParserInterface - getParser() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
OutputParserInterface -
- - - -
-
- -

-
at line 69
- public FFProbe - setParser(OutputParserInterface $parser) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
OutputParserInterface$parser -
- - -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 79
- public FFProbeDriver - getFFProbeDriver() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbeDriver -
- - - -
-
- -

-
at line 89
- public FFProbe - setFFProbeDriver(FFProbeDriver $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFProbeDriver$ffprobe -
- - -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 101
- public FFProbe - setOptionsTester(OptionsTesterInterface $tester) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
OptionsTesterInterface$tester -
- - -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 111
- public OptionsTesterInterface - getOptionsTester() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
OptionsTesterInterface -
- - - -
-
- -

-
at line 121
- public FFProbe - setCache(Cache $cache) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Cache$cache -
- - -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 131
- public Cache - getCache() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Cache -
- - - -
-
- -

-
at line 139
- public MapperInterface - getMapper() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
MapperInterface -
- - - -
-
- -

-
at line 149
- public FFProbe - setMapper(MapperInterface $mapper) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
MapperInterface$mapper -
- - -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 168
- public Format - format(string $pathfile) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
string$pathfile -
- - -

Return Value

- - - - - - -
FormatA Format object
- - -

Exceptions

- - - - - - - - - - -
InvalidArgumentException -
RuntimeException -
- - -
-
- -

-
at line 185
- public StreamCollection - streams(string $pathfile) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
string$pathfile -
- - -

Return Value

- - - - - - -
StreamCollectionA collection of streams
- - -

Exceptions

- - - - - - - - - - -
InvalidArgumentException -
RuntimeException -
- - -
-
- -

-
at line 201
- static public FFProbe - create(array|ConfigurationInterface $configuration = array(), LoggerInterface $logger = null, Cache $cache = null) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
array|ConfigurationInterface$configuration -
LoggerInterface$logger -
Cache$cache -
- - -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/DataMapping.html b/docs/source/API/API/FFMpeg/FFProbe/DataMapping.html deleted file mode 100644 index 27260db..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/DataMapping.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - FFMpeg\FFProbe\DataMapping | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\FFProbe\DataMapping

-
-
- - - - - - - - - - - - - - - - - -
AbstractData -
Format -
Stream -
StreamCollection -
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/AbstractData.html b/docs/source/API/API/FFMpeg/FFProbe/DataMapping/AbstractData.html deleted file mode 100644 index d85d701..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/AbstractData.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - FFMpeg\FFProbe\DataMapping\AbstractData | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe\DataMapping\AbstractData

-
-
-

abstract class - AbstractData implements - Countable

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(array $properties) -

-

-
- Boolean - - has(string $property) -

Returns true if data has property.

-
- mixed - - get(string $property) -

Returns the property value given its name.

-
- AbstractData - - set(string $property, mixed $value) -

Sets the property value given its name.

-
- array - - keys() -

Returns all property names.

-
- array - - all() -

Returns all properties and their values.

-
- - - count() -

{@inheritdoc}

-
- - -

Details

- -

-
at line 20
- public - __construct(array $properties) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
array$properties -
- - - - -
-
- -

-
at line 31
- public Boolean - has(string $property) -

-
-

Returns true if data has property.

-

-

-
-

Parameters

- - - - - - - -
string$property -
- - -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 44
- public mixed - get(string $property) -

-
-

Returns the property value given its name.

-

-

-
-

Parameters

- - - - - - - -
string$property -
- - -

Return Value

- - - - - - -
mixed -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case the data does not have the property
- - -
-
- -

-
at line 61
- public AbstractData - set(string $property, mixed $value) -

-
-

Sets the property value given its name.

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$property -
mixed$value -
- - -

Return Value

- - - - - - -
AbstractData -
- - - -
-
- -

-
at line 73
- public array - keys() -

-
-

Returns all property names.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 83
- public array - all() -

-
-

Returns all properties and their values.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 91
- public - count() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/Format.html b/docs/source/API/API/FFMpeg/FFProbe/DataMapping/Format.html deleted file mode 100644 index 0483759..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/Format.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - FFMpeg\FFProbe\DataMapping\Format | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe\DataMapping\Format

-
-
-

class - Format extends AbstractData

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(array $properties) -

-

-
from AbstractData
- Boolean - - has(string $property) -

Returns true if data has property.

-
from AbstractData
- mixed - - get(string $property) -

Returns the property value given its name.

-
from AbstractData
- AbstractData - - set(string $property, mixed $value) -

Sets the property value given its name.

-
from AbstractData
- array - - keys() -

Returns all property names.

-
from AbstractData
- array - - all() -

Returns all properties and their values.

-
from AbstractData
- - - count() -

{@inheritdoc}

-
from AbstractData
- - -

Details

- -

-
in AbstractData at line 20
- public - __construct(array $properties) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
array$properties -
- - - - -
-
- -

-
in AbstractData at line 31
- public Boolean - has(string $property) -

-
-

Returns true if data has property.

-

-

-
-

Parameters

- - - - - - - -
string$property -
- - -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
in AbstractData at line 44
- public mixed - get(string $property) -

-
-

Returns the property value given its name.

-

-

-
-

Parameters

- - - - - - - -
string$property -
- - -

Return Value

- - - - - - -
mixed -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case the data does not have the property
- - -
-
- -

-
in AbstractData at line 61
- public AbstractData - set(string $property, mixed $value) -

-
-

Sets the property value given its name.

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$property -
mixed$value -
- - -

Return Value

- - - - - - -
AbstractData -
- - - -
-
- -

-
in AbstractData at line 73
- public array - keys() -

-
-

Returns all property names.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
in AbstractData at line 83
- public array - all() -

-
-

Returns all properties and their values.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
in AbstractData at line 91
- public - count() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/Stream.html b/docs/source/API/API/FFMpeg/FFProbe/DataMapping/Stream.html deleted file mode 100644 index d7b5e52..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/Stream.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - FFMpeg\FFProbe\DataMapping\Stream | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe\DataMapping\Stream

-
-
-

class - Stream extends AbstractData

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(array $properties) -

-

-
from AbstractData
- Boolean - - has(string $property) -

Returns true if data has property.

-
from AbstractData
- mixed - - get(string $property) -

Returns the property value given its name.

-
from AbstractData
- AbstractData - - set(string $property, mixed $value) -

Sets the property value given its name.

-
from AbstractData
- array - - keys() -

Returns all property names.

-
from AbstractData
- array - - all() -

Returns all properties and their values.

-
from AbstractData
- - - count() -

{@inheritdoc}

-
from AbstractData
- Boolean - - isAudio() -

Returns true if the stream is an audio stream.

-
- Boolean - - isVideo() -

Returns true if the stream is a video stream.

-
- Dimension - - getDimensions() -

Returns the dimension of the video stream.

-
- - -

Details

- -

-
in AbstractData at line 20
- public - __construct(array $properties) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
array$properties -
- - - - -
-
- -

-
in AbstractData at line 31
- public Boolean - has(string $property) -

-
-

Returns true if data has property.

-

-

-
-

Parameters

- - - - - - - -
string$property -
- - -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
in AbstractData at line 44
- public mixed - get(string $property) -

-
-

Returns the property value given its name.

-

-

-
-

Parameters

- - - - - - - -
string$property -
- - -

Return Value

- - - - - - -
mixed -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case the data does not have the property
- - -
-
- -

-
in AbstractData at line 61
- public AbstractData - set(string $property, mixed $value) -

-
-

Sets the property value given its name.

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$property -
mixed$value -
- - -

Return Value

- - - - - - -
AbstractData -
- - - -
-
- -

-
in AbstractData at line 73
- public array - keys() -

-
-

Returns all property names.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
in AbstractData at line 83
- public array - all() -

-
-

Returns all properties and their values.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
in AbstractData at line 91
- public - count() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- -

-
at line 25
- public Boolean - isAudio() -

-
-

Returns true if the stream is an audio stream.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 35
- public Boolean - isVideo() -

-
-

Returns true if the stream is a video stream.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 48
- public Dimension - getDimensions() -

-
-

Returns the dimension of the video stream.

-

-

-
- -

Return Value

- - - - - - -
Dimension -
- - -

Exceptions

- - - - - - - - - - -
LogicExceptionIn case the stream is not a video stream.
RuntimeExceptionIn case the dimensions can not be extracted.
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/StreamCollection.html b/docs/source/API/API/FFMpeg/FFProbe/DataMapping/StreamCollection.html deleted file mode 100644 index 47fccb9..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/StreamCollection.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - FFMpeg\FFProbe\DataMapping\StreamCollection | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe\DataMapping\StreamCollection

-
-
-

class - StreamCollection implements - Countable, IteratorAggregate

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(array $streams = array()) -

-

-
- null|Stream - - first() -

Returns the first stream of the collection, null if the collection is empty.

-
- StreamCollection - - add(Stream $stream) -

Adds a stream to the collection.

-
- StreamCollection - - videos() -

Returns a new StreamCollection with only video streams.

-
- StreamCollection - - audios() -

Returns a new StreamCollection with only audio streams.

-
- - - count() -

{@inheritdoc}

-
- array - - all() -

Returns the array of contained streams.

-
- - - getIterator() -

{@inheritdoc}

-
- - -

Details

- -

-
at line 18
- public - __construct(array $streams = array()) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
array$streams -
- - - - -
-
- -

-
at line 29
- public null|Stream - first() -

-
-

Returns the first stream of the collection, null if the collection is empty.

-

-

-
- -

Return Value

- - - - - - -
null|Stream -
- - - -
-
- -

-
at line 43
- public StreamCollection - add(Stream $stream) -

-
-

Adds a stream to the collection.

-

-

-
-

Parameters

- - - - - - - -
Stream$stream -
- - -

Return Value

- - - - - - -
StreamCollection -
- - - -
-
- -

-
at line 55
- public StreamCollection - videos() -

-
-

Returns a new StreamCollection with only video streams.

-

-

-
- -

Return Value

- - - - - - -
StreamCollection -
- - - -
-
- -

-
at line 67
- public StreamCollection - audios() -

-
-

Returns a new StreamCollection with only audio streams.

-

-

-
- -

Return Value

- - - - - - -
StreamCollection -
- - - -
-
- -

-
at line 77
- public - count() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- -

-
at line 87
- public array - all() -

-
-

Returns the array of contained streams.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 95
- public - getIterator() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/namespace-frame.html b/docs/source/API/API/FFMpeg/FFProbe/DataMapping/namespace-frame.html deleted file mode 100644 index 94be66e..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/DataMapping/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\FFProbe\DataMapping | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/Mapper.html b/docs/source/API/API/FFMpeg/FFProbe/Mapper.html deleted file mode 100644 index 5140931..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/Mapper.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - FFMpeg\FFProbe\Mapper | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe\Mapper

-
-
-

class - Mapper implements - MapperInterface

- - - - -

Methods

- - - - - - - -
- Format|Stream - - map(string $type, string $data) -

Maps data given its type.

-
- - -

Details

- -

-
at line 25
- public Format|Stream - map(string $type, string $data) -

-
-

Maps data given its type.

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$typeOne of FFProbe::TYPE_* constant
string$dataThe data
- - -

Return Value

- - - - - - -
Format|Stream -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case the type is not supported
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/MapperInterface.html b/docs/source/API/API/FFMpeg/FFProbe/MapperInterface.html deleted file mode 100644 index 7bc428d..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/MapperInterface.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - FFMpeg\FFProbe\MapperInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\FFProbe\MapperInterface

-
-
-

interface - MapperInterface

- - - - -

Methods

- - - - - - - -
- Format|Stream - - map(string $type, string $data) -

Maps data given its type.

-
- - -

Details

- -

-
at line 26
- public Format|Stream - map(string $type, string $data) -

-
-

Maps data given its type.

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$typeOne of FFProbe::TYPE_* constant
string$dataThe data
- - -

Return Value

- - - - - - -
Format|Stream -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case the type is not supported
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/OptionsTester.html b/docs/source/API/API/FFMpeg/FFProbe/OptionsTester.html deleted file mode 100644 index 63c5bd2..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/OptionsTester.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - FFMpeg\FFProbe\OptionsTester | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe\OptionsTester

-
-
-

class - OptionsTester implements - OptionsTesterInterface

- - - - -

Methods

- - - - - - - - - - - - -
- - - __construct(FFProbeDriver $ffprobe, Cache $cache) -

-

-
- Boolean - - has(string $name) -

Tells if the given option is supported by ffprobe.

-
- - -

Details

- -

-
at line 26
- public - __construct(FFProbeDriver $ffprobe, Cache $cache) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
FFProbeDriver$ffprobe -
Cache$cache -
- - - - -
-
- -

-
at line 35
- public Boolean - has(string $name) -

-
-

Tells if the given option is supported by ffprobe.

-

-

-
-

Parameters

- - - - - - - -
string$name -
- - -

Return Value

- - - - - - -
Boolean -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/OptionsTesterInterface.html b/docs/source/API/API/FFMpeg/FFProbe/OptionsTesterInterface.html deleted file mode 100644 index 05daf8f..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/OptionsTesterInterface.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - FFMpeg\FFProbe\OptionsTesterInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\FFProbe\OptionsTesterInterface

-
-
-

interface - OptionsTesterInterface

- - - - -

Methods

- - - - - - - -
- Boolean - - has(string $name) -

Tells if the given option is supported by ffprobe.

-
- - -

Details

- -

-
at line 23
- public Boolean - has(string $name) -

-
-

Tells if the given option is supported by ffprobe.

-

-

-
-

Parameters

- - - - - - - -
string$name -
- - -

Return Value

- - - - - - -
Boolean -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/OutputParser.html b/docs/source/API/API/FFMpeg/FFProbe/OutputParser.html deleted file mode 100644 index bd52767..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/OutputParser.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - FFMpeg\FFProbe\OutputParser | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\FFProbe\OutputParser

-
-
-

class - OutputParser implements - OutputParserInterface

- - - - -

Methods

- - - - - - - -
- array - - parse(string $type, string $data) -

Parses ffprobe raw output.

-
- - -

Details

- -

-
at line 22
- public array - parse(string $type, string $data) -

-
-

Parses ffprobe raw output.

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$typeOne of FFProbe::TYPE_* constant
string$dataThe data
- - -

Return Value

- - - - - - -
array -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case the type is not supported
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/OutputParserInterface.html b/docs/source/API/API/FFMpeg/FFProbe/OutputParserInterface.html deleted file mode 100644 index f7e9b0f..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/OutputParserInterface.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - FFMpeg\FFProbe\OutputParserInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\FFProbe\OutputParserInterface

-
-
-

interface - OutputParserInterface

- - - - -

Methods

- - - - - - - -
- array - - parse(string $type, string $data) -

Parses ffprobe raw output.

-
- - -

Details

- -

-
at line 26
- public array - parse(string $type, string $data) -

-
-

Parses ffprobe raw output.

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$typeOne of FFProbe::TYPE_* constant
string$dataThe data
- - -

Return Value

- - - - - - -
array -
- - -

Exceptions

- - - - - - -
InvalidArgumentExceptionIn case the type is not supported
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/FFProbe/namespace-frame.html b/docs/source/API/API/FFMpeg/FFProbe/namespace-frame.html deleted file mode 100644 index e28747e..0000000 --- a/docs/source/API/API/FFMpeg/FFProbe/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\FFProbe | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Filters.html b/docs/source/API/API/FFMpeg/Filters.html deleted file mode 100644 index ef7e868..0000000 --- a/docs/source/API/API/FFMpeg/Filters.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - FFMpeg\Filters | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Filters

-
-
- - - - - -
FiltersCollection -
- -

Interfaces

- - - - - -
FilterInterface -
- -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Audio.html b/docs/source/API/API/FFMpeg/Filters/Audio.html deleted file mode 100644 index cdd2c60..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Audio.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - FFMpeg\Filters\Audio | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Filters\Audio

-
-
- - - - - - - - - - - - - -
AudioFilters -
AudioResamplableFilter -
SimpleFilter -
- -

Interfaces

- - - - - -
AudioFilterInterface -
- -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Audio/AudioFilterInterface.html b/docs/source/API/API/FFMpeg/Filters/Audio/AudioFilterInterface.html deleted file mode 100644 index 0914570..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Audio/AudioFilterInterface.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - FFMpeg\Filters\Audio\AudioFilterInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Filters\Audio\AudioFilterInterface

-
-
-

interface - AudioFilterInterface implements - FilterInterface

- - - - -

Methods

- - - - - - - - - - - - -
- integer - - getPriority() -

Returns the priority of the filter.

-
from FilterInterface
- array - - apply(Audio $audio, AudioInterface $format) -

Applies the filter on the the Audio media given an format.

-
- - -

Details

- -

-
in FilterInterface at line 21
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 28
- public array - apply(Audio $audio, AudioInterface $format) -

-
-

Applies the filter on the the Audio media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Audio$audio -
AudioInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Audio/AudioFilters.html b/docs/source/API/API/FFMpeg/Filters/Audio/AudioFilters.html deleted file mode 100644 index fe079c2..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Audio/AudioFilters.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - FFMpeg\Filters\Audio\AudioFilters | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Audio\AudioFilters

-
-
-

class - AudioFilters

- - - - -

Methods

- - - - - - - - - - - - -
- - - __construct(Audio $media) -

-

-
- AudioFilters - - resample(Integer $rate) -

Resamples the audio file.

-
- - -

Details

- -

-
at line 11
- public - __construct(Audio $media) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Audio$media -
- - - - -
-
- -

-
at line 23
- public AudioFilters - resample(Integer $rate) -

-
-

Resamples the audio file.

-

-

-
-

Parameters

- - - - - - - -
Integer$rate -
- - -

Return Value

- - - - - - -
AudioFilters -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Audio/AudioResamplableFilter.html b/docs/source/API/API/FFMpeg/Filters/Audio/AudioResamplableFilter.html deleted file mode 100644 index 62589a2..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Audio/AudioResamplableFilter.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - FFMpeg\Filters\Audio\AudioResamplableFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Audio\AudioResamplableFilter

-
-
-

class - AudioResamplableFilter implements - AudioFilterInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($rate, $priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- Integer - - getRate() -

-

-
- array - - apply(Audio $audio, AudioInterface $format) -

Applies the filter on the the Audio media given an format.

-
- - -

Details

- -

-
at line 24
- public - __construct($rate, $priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$rate -
$priority -
- - - - -
-
- -

-
at line 33
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 42
- public Integer - getRate() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Integer -
- - - -
-
- -

-
at line 50
- public array - apply(Audio $audio, AudioInterface $format) -

-
-

Applies the filter on the the Audio media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Audio$audio -
AudioInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Audio/SimpleFilter.html b/docs/source/API/API/FFMpeg/Filters/Audio/SimpleFilter.html deleted file mode 100644 index 03bf5c1..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Audio/SimpleFilter.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - FFMpeg\Filters\Audio\SimpleFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Audio\SimpleFilter

-
-
-

class - SimpleFilter implements - AudioFilterInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - -
- - - __construct(array $params, $priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- array - - apply(Audio $audio, AudioInterface $format) -

Applies the filter on the the Audio media given an format.

-
- - -

Details

- -

-
at line 13
- public - __construct(array $params, $priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
array$params -
$priority -
- - - - -
-
- -

-
at line 22
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 30
- public array - apply(Audio $audio, AudioInterface $format) -

-
-

Applies the filter on the the Audio media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Audio$audio -
AudioInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Audio/namespace-frame.html b/docs/source/API/API/FFMpeg/Filters/Audio/namespace-frame.html deleted file mode 100644 index c68aec4..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Audio/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Filters\Audio | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Filters/FilterInterface.html b/docs/source/API/API/FFMpeg/Filters/FilterInterface.html deleted file mode 100644 index abc5eaa..0000000 --- a/docs/source/API/API/FFMpeg/Filters/FilterInterface.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - FFMpeg\Filters\FilterInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Filters\FilterInterface

-
-
-

interface - FilterInterface

- - - - -

Methods

- - - - - - - -
- integer - - getPriority() -

Returns the priority of the filter.

-
- - -

Details

- -

-
at line 21
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/FiltersCollection.html b/docs/source/API/API/FFMpeg/Filters/FiltersCollection.html deleted file mode 100644 index 65e0739..0000000 --- a/docs/source/API/API/FFMpeg/Filters/FiltersCollection.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - FFMpeg\Filters\FiltersCollection | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\FiltersCollection

-
-
-

class - FiltersCollection implements - Countable, IteratorAggregate

- - - - -

Methods

- - - - - - - - - - - - - - - - - -
- FiltersCollection - - add(FilterInterface $filter) -

-

-
- - - count() -

{@inheritdoc}

-
- - - getIterator() -

{@inheritdoc}

-
- - -

Details

- -

-
at line 24
- public FiltersCollection - add(FilterInterface $filter) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FilterInterface$filter -
- - -

Return Value

- - - - - - -
FiltersCollection -
- - - -
-
- -

-
at line 35
- public - count() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- -

-
at line 47
- public - getIterator() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Frame.html b/docs/source/API/API/FFMpeg/Filters/Frame.html deleted file mode 100644 index 2c997c8..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Frame.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - FFMpeg\Filters\Frame | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Filters\Frame

-
-
- - - - - - - - - -
DisplayRatioFixerFilter -
FrameFilters -
- -

Interfaces

- - - - - -
FrameFilterInterface -
- -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.html b/docs/source/API/API/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.html deleted file mode 100644 index 7be0e1b..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - FFMpeg\Filters\Frame\DisplayRatioFixerFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Frame\DisplayRatioFixerFilter

-
-
-

class - DisplayRatioFixerFilter implements - FrameFilterInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - -
- - - __construct($priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- - - apply(Frame $frame) -

-

-
- - -

Details

- -

-
at line 22
- public - __construct($priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
$priority -
- - - - -
-
- -

-
at line 30
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 38
- public - apply(Frame $frame) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Frame$frame -
- - - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Frame/FrameFilterInterface.html b/docs/source/API/API/FFMpeg/Filters/Frame/FrameFilterInterface.html deleted file mode 100644 index 6273615..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Frame/FrameFilterInterface.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - FFMpeg\Filters\Frame\FrameFilterInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Filters\Frame\FrameFilterInterface

-
-
-

interface - FrameFilterInterface implements - FilterInterface

- - - - -

Methods

- - - - - - - - - - - - -
- integer - - getPriority() -

Returns the priority of the filter.

-
from FilterInterface
- - - apply(Frame $frame) -

-

-
- - -

Details

- -

-
in FilterInterface at line 21
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 19
- public - apply(Frame $frame) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Frame$frame -
- - - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Frame/FrameFilters.html b/docs/source/API/API/FFMpeg/Filters/Frame/FrameFilters.html deleted file mode 100644 index 41ea375..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Frame/FrameFilters.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - FFMpeg\Filters\Frame\FrameFilters | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Frame\FrameFilters

-
-
-

class - FrameFilters

- - - - -

Methods

- - - - - - - - - - - - -
- - - __construct(Frame $frame) -

-

-
- FrameFilters - - fixDisplayRatio() -

Fixes the display ratio of the output frame.

-
- - -

Details

- -

-
at line 20
- public - __construct(Frame $frame) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Frame$frame -
- - - - -
-
- -

-
at line 33
- public FrameFilters - fixDisplayRatio() -

-
-

Fixes the display ratio of the output frame.

-

In case the sample ratio and display ratio are different, image may be -anamorphozed. This filter fixes this by specifying the output size.

-
- -

Return Value

- - - - - - -
FrameFilters -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Frame/namespace-frame.html b/docs/source/API/API/FFMpeg/Filters/Frame/namespace-frame.html deleted file mode 100644 index 7e41e23..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Frame/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Filters\Frame | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video.html b/docs/source/API/API/FFMpeg/Filters/Video.html deleted file mode 100644 index c474efe..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - FFMpeg\Filters\Video | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Filters\Video

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClipFilter -
CustomFilter -
FrameRateFilter -
ResizeFilter -
RotateFilter -
SynchronizeFilterSynchronizes audio and video in case of desynchronized movies.
VideoFilters -
WatermarkFilter -
- -

Interfaces

- - - - - -
VideoFilterInterface -
- -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/ClipFilter.html b/docs/source/API/API/FFMpeg/Filters/Video/ClipFilter.html deleted file mode 100644 index ae86587..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/ClipFilter.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - FFMpeg\Filters\Video\ClipFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\ClipFilter

-
-
-

class - ClipFilter implements - VideoFilterInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(TimeCode $start, TimeCode $duration = null, $priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- TimeCode - - getStart() -

-

-
- TimeCode - - getDuration() -

-

-
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
at line 27
- public - __construct(TimeCode $start, TimeCode $duration = null, $priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
TimeCode$start -
TimeCode$duration -
$priority -
- - - - -
-
- -

-
at line 37
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 45
- public TimeCode - getStart() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
TimeCode -
- - - -
-
- -

-
at line 53
- public TimeCode - getDuration() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
TimeCode -
- - - -
-
- -

-
at line 61
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/CustomFilter.html b/docs/source/API/API/FFMpeg/Filters/Video/CustomFilter.html deleted file mode 100644 index 141c4ff..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/CustomFilter.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - FFMpeg\Filters\Video\CustomFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\CustomFilter

-
-
-

class - CustomFilter implements - VideoFilterInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - -
- - - __construct(string $filter, int $priority) -

A custom filter, useful if you want to build complex filters

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
at line 29
- public - __construct(string $filter, int $priority) -

-
-

A custom filter, useful if you want to build complex filters

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$filter -
int$priority -
- - - - -
-
- -

-
at line 38
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 46
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/FrameRateFilter.html b/docs/source/API/API/FFMpeg/Filters/Video/FrameRateFilter.html deleted file mode 100644 index fb9dcfc..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/FrameRateFilter.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - FFMpeg\Filters\Video\FrameRateFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\FrameRateFilter

-
-
-

class - FrameRateFilter implements - VideoFilterInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(FrameRate $rate, $gop, $priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- FrameRate - - getFrameRate() -

Returns the frame rate.

-
- Integer - - getGOP() -

Returns the GOP size.

-
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
at line 24
- public - __construct(FrameRate $rate, $gop, $priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
FrameRate$rate -
$gop -
$priority -
- - - - -
-
- -

-
at line 34
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 44
- public FrameRate - getFrameRate() -

-
-

Returns the frame rate.

-

-

-
- -

Return Value

- - - - - - -
FrameRate -
- - - -
-
- -

-
at line 56
- public Integer - getGOP() -

-
-

Returns the GOP size.

-

-

-
- -

Return Value

- - - - - - -
Integer -
- - - -

See also

- - - - - - -
https://wikipedia.org/wiki/Group_of_pictures
- -
-
- -

-
at line 64
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/ResizeFilter.html b/docs/source/API/API/FFMpeg/Filters/Video/ResizeFilter.html deleted file mode 100644 index f57c541..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/ResizeFilter.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - FFMpeg\Filters\Video\ResizeFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\ResizeFilter

-
-
-

class - ResizeFilter implements - VideoFilterInterface

- - -

Constants

- - - - - - - - - - - - - - - - - - -
RESIZEMODE_FIT -

fits to the dimensions, might introduce anamorphosis

-

-

-
RESIZEMODE_INSET -

resizes the video inside the given dimension, no anamorphosis

-

-

-
RESIZEMODE_SCALE_WIDTH -

resizes the video to fit the dimension width, no anamorphosis

-

-

-
RESIZEMODE_SCALE_HEIGHT -

resizes the video to fit the dimension height, no anamorphosis

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(Dimension $dimension, $mode = self::RESIZEMODE_FIT, $forceStandards = true, $priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- Dimension - - getDimension() -

-

-
- string - - getMode() -

-

-
- Boolean - - areStandardsForced() -

-

-
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
at line 39
- public - __construct(Dimension $dimension, $mode = self::RESIZEMODE_FIT, $forceStandards = true, $priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
Dimension$dimension -
$mode -
$forceStandards -
$priority -
- - - - -
-
- -

-
at line 50
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 58
- public Dimension - getDimension() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Dimension -
- - - -
-
- -

-
at line 66
- public string - getMode() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 74
- public Boolean - areStandardsForced() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 82
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/RotateFilter.html b/docs/source/API/API/FFMpeg/Filters/Video/RotateFilter.html deleted file mode 100644 index 819e3ca..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/RotateFilter.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - FFMpeg\Filters\Video\RotateFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\RotateFilter

-
-
-

class - RotateFilter implements - VideoFilterInterface

- - -

Constants

- - - - - - - - - - - - - - -
ROTATE_90 -

-

-

-

-
ROTATE_180 -

-

-

-

-
ROTATE_270 -

-

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($angle, $priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- Dimension - - getAngle() -

-

-
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
at line 30
- public - __construct($angle, $priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$angle -
$priority -
- - - - -
-
- -

-
at line 39
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 47
- public Dimension - getAngle() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Dimension -
- - - -
-
- -

-
at line 55
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/SynchronizeFilter.html b/docs/source/API/API/FFMpeg/Filters/Video/SynchronizeFilter.html deleted file mode 100644 index e6549e5..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/SynchronizeFilter.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - FFMpeg\Filters\Video\SynchronizeFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\SynchronizeFilter

-
-
-

class - SynchronizeFilter implements - VideoFilterInterface

- -
-

Synchronizes audio and video in case of desynchronized movies.

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - -
- - - __construct($priority = 12) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
at line 24
- public - __construct($priority = 12) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
$priority -
- - - - -
-
- -

-
at line 32
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 40
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/VideoFilterInterface.html b/docs/source/API/API/FFMpeg/Filters/Video/VideoFilterInterface.html deleted file mode 100644 index 41bd0d4..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/VideoFilterInterface.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - FFMpeg\Filters\Video\VideoFilterInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Filters\Video\VideoFilterInterface

-
-
-

interface - VideoFilterInterface implements - FilterInterface

- - - - -

Methods

- - - - - - - - - - - - -
- integer - - getPriority() -

Returns the priority of the filter.

-
from FilterInterface
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
in FilterInterface at line 21
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 28
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/VideoFilters.html b/docs/source/API/API/FFMpeg/Filters/Video/VideoFilters.html deleted file mode 100644 index 21b2669..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/VideoFilters.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - - - FFMpeg\Filters\Video\VideoFilters | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\VideoFilters

-
-
-

class - VideoFilters extends AudioFilters

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(Video $media) -

-

-
- AudioFilters - - resample(Integer $rate) -

Resamples the audio file.

-
from AudioFilters
- VideoFilters - - resize(Dimension $dimension, string $mode = ResizeFilter::RESIZEMODE_FIT, Boolean $forceStandards = true) -

Resizes a video to a given dimension.

-
- VideoFilters - - framerate(FrameRate $framerate, type $gop) -

Changes the video framerate.

-
- VideoFilters - - synchronize() -

Synchronizes audio and video.

-
- VideoFilters - - clip(TimeCode $start, TimeCode $duration = null) -

Clips (cuts) the video.

-
- AudioFilters - - audioResample(Integer $rate) -

Resamples the audio file.

-
- - - rotate($angle) -

-

-
- $this - - watermark(string $imagePath, array $coordinates = array()) -

-

-
- - -

Details

- -

-
at line 23
- public - __construct(Video $media) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
Video$media -
- - - - -
-
- -

-
in AudioFilters at line 23
- public AudioFilters - resample(Integer $rate) -

-
-

Resamples the audio file.

-

-

-
-

Parameters

- - - - - - - -
Integer$rate -
- - -

Return Value

- - - - - - -
AudioFilters -
- - - -
-
- -

-
at line 37
- public VideoFilters - resize(Dimension $dimension, string $mode = ResizeFilter::RESIZEMODE_FIT, Boolean $forceStandards = true) -

-
-

Resizes a video to a given dimension.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
Dimension$dimension -
string$mode -
Boolean$forceStandards -
- - -

Return Value

- - - - - - -
VideoFilters -
- - - -
-
- -

-
at line 52
- public VideoFilters - framerate(FrameRate $framerate, type $gop) -

-
-

Changes the video framerate.

-

-

-
-

Parameters

- - - - - - - - - - - - -
FrameRate$framerate -
type$gop -
- - -

Return Value

- - - - - - -
VideoFilters -
- - - -
-
- -

-
at line 64
- public VideoFilters - synchronize() -

-
-

Synchronizes audio and video.

-

-

-
- -

Return Value

- - - - - - -
VideoFilters -
- - - -
-
- -

-
at line 79
- public VideoFilters - clip(TimeCode $start, TimeCode $duration = null) -

-
-

Clips (cuts) the video.

-

-

-
-

Parameters

- - - - - - - - - - - - -
TimeCode$start -
TimeCode$duration -
- - -

Return Value

- - - - - - -
VideoFilters -
- - - -
-
- -

-
at line 93
- public AudioFilters - audioResample(Integer $rate) -

-
-

Resamples the audio file.

-

-

-
-

Parameters

- - - - - - - -
Integer$rate -
- - -

Return Value

- - - - - - -
AudioFilters -
- - - -
-
- -

-
at line 100
- public - rotate($angle) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
$angle -
- - - - -
-
- -

-
at line 113
- public $this - watermark(string $imagePath, array $coordinates = array()) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
string$imagePath -
array$coordinates -
- - -

Return Value

- - - - - - -
$this -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/WatermarkFilter.html b/docs/source/API/API/FFMpeg/Filters/Video/WatermarkFilter.html deleted file mode 100644 index 4f97f5c..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/WatermarkFilter.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - FFMpeg\Filters\Video\WatermarkFilter | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Filters\Video\WatermarkFilter

-
-
-

class - WatermarkFilter implements - VideoFilterInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - -
- - - __construct($watermarkPath, array $coordinates = array(), $priority) -

-

-
- integer - - getPriority() -

Returns the priority of the filter.

-
- array - - apply(Video $video, VideoInterface $format) -

Applies the filter on the the Video media given an format.

-
- - -

Details

- -

-
at line 26
- public - __construct($watermarkPath, array $coordinates = array(), $priority) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
$watermarkPath -
array$coordinates -
$priority -
- - - - -
-
- -

-
at line 36
- public integer - getPriority() -

-
-

Returns the priority of the filter.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 44
- public array - apply(Video $video, VideoInterface $format) -

-
-

Applies the filter on the the Video media given an format.

-

-

-
-

Parameters

- - - - - - - - - - - - -
Video$video -
VideoInterface$format -
- - -

Return Value

- - - - - - -
arrayAn array of arguments
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Filters/Video/namespace-frame.html b/docs/source/API/API/FFMpeg/Filters/Video/namespace-frame.html deleted file mode 100644 index 25db4f1..0000000 --- a/docs/source/API/API/FFMpeg/Filters/Video/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Filters\Video | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Filters/namespace-frame.html b/docs/source/API/API/FFMpeg/Filters/namespace-frame.html deleted file mode 100644 index dd37384..0000000 --- a/docs/source/API/API/FFMpeg/Filters/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Filters | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Format.html b/docs/source/API/API/FFMpeg/Format.html deleted file mode 100644 index 8198a1f..0000000 --- a/docs/source/API/API/FFMpeg/Format.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - FFMpeg\Format | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Format

-
-
- -

Interfaces

- - - - - - - - - - - - - - - - - - - - - -
AudioInterface -
FormatInterface -
FrameInterface -
ProgressableInterface -
VideoInterface -
- -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio.html b/docs/source/API/API/FFMpeg/Format/Audio.html deleted file mode 100644 index a9fa753..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - FFMpeg\Format\Audio | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Format\Audio

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
AacThe AAC audio format
DefaultAudio -
FlacThe Flac audio format
Mp3The MP3 audio format
VorbisThe Vorbis audio format
WavThe WAV audio format
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio/Aac.html b/docs/source/API/API/FFMpeg/Format/Audio/Aac.html deleted file mode 100644 index abe6b07..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio/Aac.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - FFMpeg\Format\Audio\Aac | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Audio\Aac

-
-
-

class - Aac extends DefaultAudio

- -
-

The AAC audio format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultAudio
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- - - __construct() -

-

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 124
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 19
- public - __construct() -

-
-

-

-

-

-
- - - -
-
- -

-
at line 27
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio/DefaultAudio.html b/docs/source/API/API/FFMpeg/Format/Audio/DefaultAudio.html deleted file mode 100644 index 5cbc856..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio/DefaultAudio.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - - - FFMpeg\Format\Audio\DefaultAudio | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Audio\DefaultAudio

-
-
-

abstract class - DefaultAudio extends EventEmitter implements - AudioInterface, ProgressableInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
- string - - getAudioCodec() -

Returns the audio codec.

-
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
- integer - - getAudioChannels() -

Gets the audio channels value.

-
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
- string - - getPasses() -

Returns the number of passes.

-
- - -

Details

- -

-
at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 124
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio/Flac.html b/docs/source/API/API/FFMpeg/Format/Audio/Flac.html deleted file mode 100644 index 51d67ee..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio/Flac.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - FFMpeg\Format\Audio\Flac | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Audio\Flac

-
-
-

class - Flac extends DefaultAudio

- -
-

The Flac audio format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultAudio
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- - - __construct() -

-

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 124
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 19
- public - __construct() -

-
-

-

-

-

-
- - - -
-
- -

-
at line 27
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio/Mp3.html b/docs/source/API/API/FFMpeg/Format/Audio/Mp3.html deleted file mode 100644 index 4a86cfc..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio/Mp3.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - FFMpeg\Format\Audio\Mp3 | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Audio\Mp3

-
-
-

class - Mp3 extends DefaultAudio

- -
-

The MP3 audio format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultAudio
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- - - __construct() -

-

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 124
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 19
- public - __construct() -

-
-

-

-

-

-
- - - -
-
- -

-
at line 27
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio/Vorbis.html b/docs/source/API/API/FFMpeg/Format/Audio/Vorbis.html deleted file mode 100644 index d9964ae..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio/Vorbis.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - FFMpeg\Format\Audio\Vorbis | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Audio\Vorbis

-
-
-

class - Vorbis extends DefaultAudio

- -
-

The Vorbis audio format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultAudio
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- - - __construct() -

-

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- - -

Details

- -

-
at line 27
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 124
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 19
- public - __construct() -

-
-

-

-

-

-
- - - -
-
- -

-
at line 35
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio/Wav.html b/docs/source/API/API/FFMpeg/Format/Audio/Wav.html deleted file mode 100644 index 01bcef3..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio/Wav.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - FFMpeg\Format\Audio\Wav | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Audio\Wav

-
-
-

class - Wav extends DefaultAudio

- -
-

The WAV audio format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultAudio
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- - - __construct() -

-

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 124
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 19
- public - __construct() -

-
-

-

-

-

-
- - - -
-
- -

-
at line 27
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Audio/namespace-frame.html b/docs/source/API/API/FFMpeg/Format/Audio/namespace-frame.html deleted file mode 100644 index f4b09ee..0000000 --- a/docs/source/API/API/FFMpeg/Format/Audio/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Format\Audio | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Format/AudioInterface.html b/docs/source/API/API/FFMpeg/Format/AudioInterface.html deleted file mode 100644 index 2414fd0..0000000 --- a/docs/source/API/API/FFMpeg/Format/AudioInterface.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - FFMpeg\Format\AudioInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Format\AudioInterface

-
-
-

interface - AudioInterface implements - FormatInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- string - - getPasses() -

Returns the number of passes.

-
from FormatInterface
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from FormatInterface
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
- integer - - getAudioChannels() -

Gets the audio channels value.

-
- string - - getAudioCodec() -

Returns the audio codec.

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- - -

Details

- -

-
in FormatInterface at line 20
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in FormatInterface at line 27
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
at line 20
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 27
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 34
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 41
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/FormatInterface.html b/docs/source/API/API/FFMpeg/Format/FormatInterface.html deleted file mode 100644 index 965ca38..0000000 --- a/docs/source/API/API/FFMpeg/Format/FormatInterface.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - FFMpeg\Format\FormatInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Format\FormatInterface

-
-
-

interface - FormatInterface

- - - - -

Methods

- - - - - - - - - - - - -
- string - - getPasses() -

Returns the number of passes.

-
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
- - -

Details

- -

-
at line 20
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 27
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/FrameInterface.html b/docs/source/API/API/FFMpeg/Format/FrameInterface.html deleted file mode 100644 index 0b5e7c5..0000000 --- a/docs/source/API/API/FFMpeg/Format/FrameInterface.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - FFMpeg\Format\FrameInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Format\FrameInterface

-
-
-

interface - FrameInterface implements - FormatInterface

- - - - -

Methods

- - - - - - - - - - - - -
- string - - getPasses() -

Returns the number of passes.

-
from FormatInterface
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from FormatInterface
- - -

Details

- -

-
in FormatInterface at line 20
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in FormatInterface at line 27
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/ProgressListener.html b/docs/source/API/API/FFMpeg/Format/ProgressListener.html deleted file mode 100644 index 33f886a..0000000 --- a/docs/source/API/API/FFMpeg/Format/ProgressListener.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - FFMpeg\Format\ProgressListener | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Format\ProgressListener

-
-
- - - - - - - - - - - - - -
AbstractProgressListener -
AudioProgressListenerParses ffmpeg stderr progress information.
VideoProgressListenerParses ffmpeg stderr progress information for video files.
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/ProgressListener/AbstractProgressListener.html b/docs/source/API/API/FFMpeg/Format/ProgressListener/AbstractProgressListener.html deleted file mode 100644 index 3870e2e..0000000 --- a/docs/source/API/API/FFMpeg/Format/ProgressListener/AbstractProgressListener.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - FFMpeg\Format\ProgressListener\AbstractProgressListener | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\ProgressListener\AbstractProgressListener

-
-
-

abstract class - AbstractProgressListener extends EventEmitter implements - ListenerInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(FFProbe $ffprobe, string $pathfile, integer $currentPass, integer $totalPass) -

-

-
- FFProbe - - getFFProbe() -

-

-
- string - - getPathfile() -

-

-
- integer - - getCurrentPass() -

-

-
- integer - - getTotalPass() -

-

-
- - - handle($type, $data) -

{@inheritdoc}

-
- - - forwardedEvents() -

{@inheritdoc}

-
- - -

Details

- -

-
at line 83
- public - __construct(FFProbe $ffprobe, string $pathfile, integer $currentPass, integer $totalPass) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
FFProbe$ffprobe -
string$pathfile -
integer$currentPassThe cureent pass number
integer$totalPassThe total number of passes
- - - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- -

-
at line 94
- public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 102
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 110
- public integer - getCurrentPass() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 118
- public integer - getTotalPass() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 126
- public - handle($type, $data) -

-
-

{@inheritdoc}

-

-

-
-

Parameters

- - - - - - - - - - - - -
$type -
$data -
- - - - -
-
- -

-
at line 136
- public - forwardedEvents() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/ProgressListener/AudioProgressListener.html b/docs/source/API/API/FFMpeg/Format/ProgressListener/AudioProgressListener.html deleted file mode 100644 index 004efbf..0000000 --- a/docs/source/API/API/FFMpeg/Format/ProgressListener/AudioProgressListener.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - FFMpeg\Format\ProgressListener\AudioProgressListener | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\ProgressListener\AudioProgressListener

-
-
-

class - AudioProgressListener extends AbstractProgressListener

- -
-

Parses ffmpeg stderr progress information.

-

An example:

- -
-      size=    3552kB time=00:03:47.29 bitrate= 128.0kbits/s
-
-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(FFProbe $ffprobe, string $pathfile, integer $currentPass, integer $totalPass) -

-

-
from AbstractProgressListener
- FFProbe - - getFFProbe() -

-

-
from AbstractProgressListener
- string - - getPathfile() -

-

-
from AbstractProgressListener
- integer - - getCurrentPass() -

-

-
from AbstractProgressListener
- integer - - getTotalPass() -

-

-
from AbstractProgressListener
- - - handle($type, $data) -

{@inheritdoc}

-
from AbstractProgressListener
- - - forwardedEvents() -

{@inheritdoc}

-
from AbstractProgressListener
- - - getPattern() -

-

-
- - -

Details

- -

- - public - __construct(FFProbe $ffprobe, string $pathfile, integer $currentPass, integer $totalPass) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
FFProbe$ffprobe -
string$pathfile -
integer$currentPassThe cureent pass number
integer$totalPassThe total number of passes
- - - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- -

- - public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

- - public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

- - public integer - getCurrentPass() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

- - public integer - getTotalPass() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

- - public - handle($type, $data) -

-
-

{@inheritdoc}

-

-

-
-

Parameters

- - - - - - - - - - - - -
$type -
$data -
- - - - -
-
- -

- - public - forwardedEvents() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- -

-
at line 25
- public - getPattern() -

-
-

-

-

-

-
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/ProgressListener/VideoProgressListener.html b/docs/source/API/API/FFMpeg/Format/ProgressListener/VideoProgressListener.html deleted file mode 100644 index 14761b8..0000000 --- a/docs/source/API/API/FFMpeg/Format/ProgressListener/VideoProgressListener.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - FFMpeg\Format\ProgressListener\VideoProgressListener | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\ProgressListener\VideoProgressListener

-
-
-

class - VideoProgressListener extends AbstractProgressListener

- -
-

Parses ffmpeg stderr progress information for video files.

-

An example:

- -
-      frame=  171 fps=0.0 q=10.0 size=      18kB time=00:00:05.72 bitrate=  26.4kbits/s dup=8 drop=0
-
-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(FFProbe $ffprobe, string $pathfile, integer $currentPass, integer $totalPass) -

-

-
from AbstractProgressListener
- FFProbe - - getFFProbe() -

-

-
from AbstractProgressListener
- string - - getPathfile() -

-

-
from AbstractProgressListener
- integer - - getCurrentPass() -

-

-
from AbstractProgressListener
- integer - - getTotalPass() -

-

-
from AbstractProgressListener
- - - handle($type, $data) -

{@inheritdoc}

-
from AbstractProgressListener
- - - forwardedEvents() -

{@inheritdoc}

-
from AbstractProgressListener
- - - getPattern() -

-

-
- - -

Details

- -

- - public - __construct(FFProbe $ffprobe, string $pathfile, integer $currentPass, integer $totalPass) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
FFProbe$ffprobe -
string$pathfile -
integer$currentPassThe cureent pass number
integer$totalPassThe total number of passes
- - - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- -

- - public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

- - public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

- - public integer - getCurrentPass() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

- - public integer - getTotalPass() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

- - public - handle($type, $data) -

-
-

{@inheritdoc}

-

-

-
-

Parameters

- - - - - - - - - - - - -
$type -
$data -
- - - - -
-
- -

- - public - forwardedEvents() -

-
-

{@inheritdoc}

-

-

-
- - - -
-
- -

-
at line 25
- public - getPattern() -

-
-

-

-

-

-
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/ProgressListener/namespace-frame.html b/docs/source/API/API/FFMpeg/Format/ProgressListener/namespace-frame.html deleted file mode 100644 index 751cbbe..0000000 --- a/docs/source/API/API/FFMpeg/Format/ProgressListener/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Format\ProgressListener | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Format/ProgressableInterface.html b/docs/source/API/API/FFMpeg/Format/ProgressableInterface.html deleted file mode 100644 index c1e26b4..0000000 --- a/docs/source/API/API/FFMpeg/Format/ProgressableInterface.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - FFMpeg\Format\ProgressableInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Format\ProgressableInterface

-
-
-

interface - ProgressableInterface implements - EventEmitterInterface

- - - - -

Methods

- - - - - - - -
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
- - -

Details

- -

-
at line 30
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video.html b/docs/source/API/API/FFMpeg/Format/Video.html deleted file mode 100644 index a98c230..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - FFMpeg\Format\Video | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Format\Video

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
DefaultVideoThe abstract default Video format
OggThe Ogg video format
WMVThe WMV video format
WMV3The WMV video format
WebMThe WebM video format
X264The X264 video format
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video/DefaultVideo.html b/docs/source/API/API/FFMpeg/Format/Video/DefaultVideo.html deleted file mode 100644 index f80fbd3..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video/DefaultVideo.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - - - FFMpeg\Format\Video\DefaultVideo | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Video\DefaultVideo

-
-
-

abstract class - DefaultVideo extends DefaultAudio implements - VideoInterface

- -
-

The abstract default Video format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- integer - - getKiloBitrate() -

Gets the kiloBitrate value.

-
- - - setKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
- string - - getVideoCodec() -

Returns the video codec.

-
- - - setVideoCodec(string $videoCodec) -

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-
- integer - - getModulus() -

-

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 100
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 38
- public integer - getKiloBitrate() -

-
-

Gets the kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 49
- public - setKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 63
- public string - getVideoCodec() -

-
-

Returns the video codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 75
- public - setVideoCodec(string $videoCodec) -

-
-

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$videoCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 92
- public integer - getModulus() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video/Ogg.html b/docs/source/API/API/FFMpeg/Format/Video/Ogg.html deleted file mode 100644 index f7acf6e..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video/Ogg.html +++ /dev/null @@ -1,791 +0,0 @@ - - - - - - FFMpeg\Format\Video\Ogg | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Video\Ogg

-
-
-

class - Ogg extends DefaultVideo

- -
-

The Ogg video format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultVideo
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- integer - - getKiloBitrate() -

Gets the kiloBitrate value.

-
from DefaultVideo
- - - setKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultVideo
- string - - getVideoCodec() -

Returns the video codec.

-
from DefaultVideo
- - - setVideoCodec(string $videoCodec) -

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultVideo
- integer - - getModulus() -

-

-
from DefaultVideo
- - - __construct($audioCodec = 'libvorbis', $videoCodec = 'libtheora') -

-

-
- Boolean - - supportBFrames() -

Returns true if the current format supports B-Frames.

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- array - - getAvailableVideoCodecs() -

Returns the list of available video codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 100
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 38
- public integer - getKiloBitrate() -

-
-

Gets the kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultVideo at line 49
- public - setKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 63
- public string - getVideoCodec() -

-
-

Returns the video codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 75
- public - setVideoCodec(string $videoCodec) -

-
-

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$videoCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 92
- public integer - getModulus() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 19
- public - __construct($audioCodec = 'libvorbis', $videoCodec = 'libtheora') -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$audioCodec -
$videoCodec -
- - - - -
-
- -

-
at line 29
- public Boolean - supportBFrames() -

-
-

Returns true if the current format supports B-Frames.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 37
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 45
- public array - getAvailableVideoCodecs() -

-
-

Returns the list of available video codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video/WMV.html b/docs/source/API/API/FFMpeg/Format/Video/WMV.html deleted file mode 100644 index d1d6f1e..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video/WMV.html +++ /dev/null @@ -1,791 +0,0 @@ - - - - - - FFMpeg\Format\Video\WMV | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Video\WMV

-
-
-

class - WMV extends DefaultVideo

- -
-

The WMV video format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultVideo
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- integer - - getKiloBitrate() -

Gets the kiloBitrate value.

-
from DefaultVideo
- - - setKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultVideo
- string - - getVideoCodec() -

Returns the video codec.

-
from DefaultVideo
- - - setVideoCodec(string $videoCodec) -

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultVideo
- integer - - getModulus() -

-

-
from DefaultVideo
- - - __construct($audioCodec = 'wmav2', $videoCodec = 'wmv2') -

-

-
- Boolean - - supportBFrames() -

Returns true if the current format supports B-Frames.

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- array - - getAvailableVideoCodecs() -

Returns the list of available video codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 100
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 38
- public integer - getKiloBitrate() -

-
-

Gets the kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultVideo at line 49
- public - setKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 63
- public string - getVideoCodec() -

-
-

Returns the video codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 75
- public - setVideoCodec(string $videoCodec) -

-
-

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$videoCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 92
- public integer - getModulus() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 19
- public - __construct($audioCodec = 'wmav2', $videoCodec = 'wmv2') -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$audioCodec -
$videoCodec -
- - - - -
-
- -

-
at line 29
- public Boolean - supportBFrames() -

-
-

Returns true if the current format supports B-Frames.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 37
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 45
- public array - getAvailableVideoCodecs() -

-
-

Returns the list of available video codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video/WMV3.html b/docs/source/API/API/FFMpeg/Format/Video/WMV3.html deleted file mode 100644 index 326a2b2..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video/WMV3.html +++ /dev/null @@ -1,791 +0,0 @@ - - - - - - FFMpeg\Format\Video\WMV3 | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Video\WMV3

-
-
-

class - WMV3 extends DefaultVideo

- -
-

The WMV video format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultVideo
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- integer - - getKiloBitrate() -

Gets the kiloBitrate value.

-
from DefaultVideo
- - - setKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultVideo
- string - - getVideoCodec() -

Returns the video codec.

-
from DefaultVideo
- - - setVideoCodec(string $videoCodec) -

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultVideo
- integer - - getModulus() -

-

-
from DefaultVideo
- - - __construct($audioCodec = 'wmav3', $videoCodec = 'wmv3') -

-

-
- Boolean - - supportBFrames() -

Returns true if the current format supports B-Frames.

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- array - - getAvailableVideoCodecs() -

Returns the list of available video codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 100
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 38
- public integer - getKiloBitrate() -

-
-

Gets the kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultVideo at line 49
- public - setKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 63
- public string - getVideoCodec() -

-
-

Returns the video codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 75
- public - setVideoCodec(string $videoCodec) -

-
-

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$videoCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 92
- public integer - getModulus() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 19
- public - __construct($audioCodec = 'wmav3', $videoCodec = 'wmv3') -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$audioCodec -
$videoCodec -
- - - - -
-
- -

-
at line 29
- public Boolean - supportBFrames() -

-
-

Returns true if the current format supports B-Frames.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 37
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 45
- public array - getAvailableVideoCodecs() -

-
-

Returns the list of available video codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video/WebM.html b/docs/source/API/API/FFMpeg/Format/Video/WebM.html deleted file mode 100644 index e274c36..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video/WebM.html +++ /dev/null @@ -1,791 +0,0 @@ - - - - - - FFMpeg\Format\Video\WebM | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Video\WebM

-
-
-

class - WebM extends DefaultVideo

- -
-

The WebM video format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultVideo
- string - - getPasses() -

Returns the number of passes.

-
from DefaultAudio
- integer - - getKiloBitrate() -

Gets the kiloBitrate value.

-
from DefaultVideo
- - - setKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultVideo
- string - - getVideoCodec() -

Returns the video codec.

-
from DefaultVideo
- - - setVideoCodec(string $videoCodec) -

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultVideo
- integer - - getModulus() -

-

-
from DefaultVideo
- - - __construct($audioCodec = 'libvorbis', $videoCodec = 'libvpx') -

-

-
- Boolean - - supportBFrames() -

Returns true if the current format supports B-Frames.

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- array - - getAvailableVideoCodecs() -

Returns the list of available video codecs for this format.

-
- - -

Details

- -

-
at line 37
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 100
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in DefaultAudio at line 138
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 38
- public integer - getKiloBitrate() -

-
-

Gets the kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultVideo at line 49
- public - setKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 63
- public string - getVideoCodec() -

-
-

Returns the video codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 75
- public - setVideoCodec(string $videoCodec) -

-
-

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$videoCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 92
- public integer - getModulus() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 19
- public - __construct($audioCodec = 'libvorbis', $videoCodec = 'libvpx') -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$audioCodec -
$videoCodec -
- - - - -
-
- -

-
at line 29
- public Boolean - supportBFrames() -

-
-

Returns true if the current format supports B-Frames.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 45
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 53
- public array - getAvailableVideoCodecs() -

-
-

Returns the list of available video codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video/X264.html b/docs/source/API/API/FFMpeg/Format/Video/X264.html deleted file mode 100644 index bcf7d52..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video/X264.html +++ /dev/null @@ -1,875 +0,0 @@ - - - - - - FFMpeg\Format\Video\X264 | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Format\Video\X264

-
-
-

class - X264 extends DefaultVideo

- -
-

The X264 video format

-

-

-
- - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from DefaultAudio
- string - - getAudioCodec() -

Returns the audio codec.

-
from DefaultAudio
- - - setAudioCodec(string $audioCodec) -

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultAudio
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from DefaultAudio
- - - setAudioKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultAudio
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from DefaultAudio
- - - setAudioChannels(integer $channels) -

Sets the channels value.

-
from DefaultAudio
- array - - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

Creates the progress listener.

-
from DefaultVideo
- integer - - setPasses(integer $passes) -

Sets the number of passes.

-
- integer - - getPasses() -

Returns the number of passes.

-
- integer - - getKiloBitrate() -

Gets the kiloBitrate value.

-
from DefaultVideo
- - - setKiloBitrate(integer $kiloBitrate) -

Sets the kiloBitrate value.

-
from DefaultVideo
- string - - getVideoCodec() -

Returns the video codec.

-
from DefaultVideo
- - - setVideoCodec(string $videoCodec) -

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-
from DefaultVideo
- int - - getModulus() -

-

-
- - - __construct($audioCodec = 'libfaac', $videoCodec = 'libx264') -

-

-
- Boolean - - supportBFrames() -

Returns true if the current format supports B-Frames.

-
- X264 - - setBFramesSupport($support $support) -

-

-
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
- array - - getAvailableVideoCodecs() -

Returns the list of available video codecs for this format.

-
- - -

Details

- -

-
in DefaultAudio at line 36
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in DefaultAudio at line 44
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultAudio at line 57
- public - setAudioCodec(string $audioCodec) -

-
-

Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$audioCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 74
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 85
- public - setAudioKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultAudio at line 99
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultAudio at line 110
- public - setAudioChannels(integer $channels) -

-
-

Sets the channels value.

-

-

-
-

Parameters

- - - - - - - -
integer$channels -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 100
- public array - createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, Integer $pass, Integer $total) -

-
-

Creates the progress listener.

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
MediaTypeInterface$media -
FFProbe$ffprobe -
Integer$passThe current pas snumber
Integer$totalThe total pass number
- - -

Return Value

- - - - - - -
arrayAn array of listeners
- - - -
-
- -

-
in X264 at line 68
- public integer - setPasses(integer $passes) -

-
-

Sets the number of passes.

-

-

-
- -

Parameters

- - - - - - -
integer$passes
- - - -
-
- -

-
in X264 at line 79
- public integer - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultVideo at line 38
- public integer - getKiloBitrate() -

-
-

Gets the kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in DefaultVideo at line 49
- public - setKiloBitrate(integer $kiloBitrate) -

-
-

Sets the kiloBitrate value.

-

-

-
-

Parameters

- - - - - - - -
integer$kiloBitrate -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
in DefaultVideo at line 63
- public string - getVideoCodec() -

-
-

Returns the video codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in DefaultVideo at line 75
- public - setVideoCodec(string $videoCodec) -

-
-

Sets the video codec, Should be in the available ones, otherwise an exception is thrown.

-

-

-
-

Parameters

- - - - - - - -
string$videoCodec -
- - - -

Exceptions

- - - - - - -
InvalidArgumentException -
- - -
-
- -

-
at line 76
- public int - getModulus() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
int -
- - - -
-
- -

-
at line 22
- public - __construct($audioCodec = 'libfaac', $videoCodec = 'libx264') -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - -
$audioCodec -
$videoCodec -
- - - - -
-
- -

-
at line 32
- public Boolean - supportBFrames() -

-
-

Returns true if the current format supports B-Frames.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -
-
- -

-
at line 42
- public X264 - setBFramesSupport($support $support) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
$support$support -
- - -

Return Value

- - - - - - -
X264 -
- - - -
-
- -

-
at line 52
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 60
- public array - getAvailableVideoCodecs() -

-
-

Returns the list of available video codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/Video/namespace-frame.html b/docs/source/API/API/FFMpeg/Format/Video/namespace-frame.html deleted file mode 100644 index a70a0ed..0000000 --- a/docs/source/API/API/FFMpeg/Format/Video/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Format\Video | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Format/VideoInterface.html b/docs/source/API/API/FFMpeg/Format/VideoInterface.html deleted file mode 100644 index a1e0624..0000000 --- a/docs/source/API/API/FFMpeg/Format/VideoInterface.html +++ /dev/null @@ -1,461 +0,0 @@ - - - - - - FFMpeg\Format\VideoInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Format\VideoInterface

-
-
-

interface - VideoInterface implements - AudioInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- string - - getPasses() -

Returns the number of passes.

-
from FormatInterface
- array() - - getExtraParams() -

Returns an array of extra parameters to add to ffmpeg commandline.

-
from FormatInterface
- integer - - getAudioKiloBitrate() -

Gets the audio kiloBitrate value.

-
from AudioInterface
- integer - - getAudioChannels() -

Gets the audio channels value.

-
from AudioInterface
- string - - getAudioCodec() -

Returns the audio codec.

-
from AudioInterface
- array - - getAvailableAudioCodecs() -

Returns the list of available audio codecs for this format.

-
from AudioInterface
- integer - - getKiloBitrate() -

Gets the kiloBitrate value.

-
- integer - - getModulus() -

Returns the modulus used by the Resizable video.

-
- string - - getVideoCodec() -

Returns the video codec.

-
- Boolean - - supportBFrames() -

Returns true if the current format supports B-Frames.

-
- array - - getAvailableVideoCodecs() -

Returns the list of available video codecs for this format.

-
- - -

Details

- -

-
in FormatInterface at line 20
- public string - getPasses() -

-
-

Returns the number of passes.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in FormatInterface at line 27
- public array() - getExtraParams() -

-
-

Returns an array of extra parameters to add to ffmpeg commandline.

-

-

-
- -

Return Value

- - - - - - -
array() -
- - - -
-
- -

-
in AudioInterface at line 20
- public integer - getAudioKiloBitrate() -

-
-

Gets the audio kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in AudioInterface at line 27
- public integer - getAudioChannels() -

-
-

Gets the audio channels value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
in AudioInterface at line 34
- public string - getAudioCodec() -

-
-

Returns the audio codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in AudioInterface at line 41
- public array - getAvailableAudioCodecs() -

-
-

Returns the list of available audio codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- -

-
at line 21
- public integer - getKiloBitrate() -

-
-

Gets the kiloBitrate value.

-

-

-
- -

Return Value

- - - - - - -
integer -
- - - -
-
- -

-
at line 33
- public integer - getModulus() -

-
-

Returns the modulus used by the Resizable video.

-

This used to calculate the target dimensions while maintaining the best -aspect ratio.

-
- -

Return Value

- - - - - - -
integer -
- - - -

See also

- - - - - - -
http://www.undeadborn.net/tools/rescalculator.php
- -
-
- -

-
at line 40
- public string - getVideoCodec() -

-
-

Returns the video codec.

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 49
- public Boolean - supportBFrames() -

-
-

Returns true if the current format supports B-Frames.

-

-

-
- -

Return Value

- - - - - - -
Boolean -
- - - -

See also

- - - - - - -
https://wikipedia.org/wiki/Video_compression_picture_types
- -
-
- -

-
at line 56
- public array - getAvailableVideoCodecs() -

-
-

Returns the list of available video codecs for this format.

-

-

-
- -

Return Value

- - - - - - -
array -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Format/namespace-frame.html b/docs/source/API/API/FFMpeg/Format/namespace-frame.html deleted file mode 100644 index 2b65b23..0000000 --- a/docs/source/API/API/FFMpeg/Format/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Format | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/Media.html b/docs/source/API/API/FFMpeg/Media.html deleted file mode 100644 index 4db13bc..0000000 --- a/docs/source/API/API/FFMpeg/Media.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - FFMpeg\Media | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Namespace
-

FFMpeg\Media

-
-
- - - - - - - - - - - - - - - - - - - - - -
AbstractMediaType -
AbstractStreamableMedia -
Audio -
Frame -
Video -
- -

Interfaces

- - - - - -
MediaTypeInterface -
- -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/AbstractMediaType.html b/docs/source/API/API/FFMpeg/Media/AbstractMediaType.html deleted file mode 100644 index cd83d5a..0000000 --- a/docs/source/API/API/FFMpeg/Media/AbstractMediaType.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - FFMpeg\Media\AbstractMediaType | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Media\AbstractMediaType

-
-
-

abstract class - AbstractMediaType implements - MediaTypeInterface

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-

-
- FFMpegDriver - - getFFMpegDriver() -

-

-
- MediaTypeInterface - - setFFMpegDriver(FFMpegDriver $driver) -

-

-
- FFProbe - - getFFProbe() -

-

-
- MediaTypeInterface - - setFFProbe(FFProbe $ffprobe) -

-

-
- string - - getPathfile() -

-

-
- MediaTypeInterface - - setFiltersCollection(FiltersCollection $filters) -

-

-
- MediaTypeInterface - - getFiltersCollection() -

-

-
- - -

Details

- -

-
at line 29
- public - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
$pathfile -
FFMpegDriver$driver -
FFProbe$ffprobe -
- - - - -
-
- -

-
at line 40
- public FFMpegDriver - getFFMpegDriver() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- -

-
at line 50
- public MediaTypeInterface - setFFMpegDriver(FFMpegDriver $driver) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFMpegDriver$driver -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
at line 60
- public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
at line 70
- public MediaTypeInterface - setFFProbe(FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFProbe$ffprobe -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
at line 80
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
at line 90
- public MediaTypeInterface - setFiltersCollection(FiltersCollection $filters) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FiltersCollection$filters -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
at line 100
- public MediaTypeInterface - getFiltersCollection() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/AbstractStreamableMedia.html b/docs/source/API/API/FFMpeg/Media/AbstractStreamableMedia.html deleted file mode 100644 index 2957ac4..0000000 --- a/docs/source/API/API/FFMpeg/Media/AbstractStreamableMedia.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - FFMpeg\Media\AbstractStreamableMedia | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Media\AbstractStreamableMedia

-
-
-

abstract class - AbstractStreamableMedia extends AbstractMediaType

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-

-
from AbstractMediaType
- FFMpegDriver - - getFFMpegDriver() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFMpegDriver(FFMpegDriver $driver) -

-

-
from AbstractMediaType
- FFProbe - - getFFProbe() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFProbe(FFProbe $ffprobe) -

-

-
from AbstractMediaType
- string - - getPathfile() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFiltersCollection(FiltersCollection $filters) -

-

-
from AbstractMediaType
- MediaTypeInterface - - getFiltersCollection() -

-

-
from AbstractMediaType
- StreamCollection - - getStreams() -

-

-
- Stream - - getFormat() -

-

-
- - -

Details

- -

-
in AbstractMediaType at line 29
- public - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
$pathfile -
FFMpegDriver$driver -
FFProbe$ffprobe -
- - - - -
-
- -

-
in AbstractMediaType at line 40
- public FFMpegDriver - getFFMpegDriver() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- -

-
in AbstractMediaType at line 50
- public MediaTypeInterface - setFFMpegDriver(FFMpegDriver $driver) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFMpegDriver$driver -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 60
- public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
in AbstractMediaType at line 70
- public MediaTypeInterface - setFFProbe(FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFProbe$ffprobe -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 80
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in AbstractMediaType at line 90
- public MediaTypeInterface - setFiltersCollection(FiltersCollection $filters) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FiltersCollection$filters -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 100
- public MediaTypeInterface - getFiltersCollection() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
at line 24
- public StreamCollection - getStreams() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
StreamCollection -
- - - -
-
- -

-
at line 36
- public Stream - getFormat() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Stream -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/Audio.html b/docs/source/API/API/FFMpeg/Media/Audio.html deleted file mode 100644 index afdb3fe..0000000 --- a/docs/source/API/API/FFMpeg/Media/Audio.html +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - FFMpeg\Media\Audio | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Media\Audio

-
-
-

class - Audio extends AbstractStreamableMedia

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-

-
from AbstractMediaType
- FFMpegDriver - - getFFMpegDriver() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFMpegDriver(FFMpegDriver $driver) -

-

-
from AbstractMediaType
- FFProbe - - getFFProbe() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFProbe(FFProbe $ffprobe) -

-

-
from AbstractMediaType
- string - - getPathfile() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFiltersCollection(FiltersCollection $filters) -

-

-
from AbstractMediaType
- MediaTypeInterface - - getFiltersCollection() -

-

-
from AbstractMediaType
- StreamCollection - - getStreams() -

-

-
from AbstractStreamableMedia
- Stream - - getFormat() -

-

-
from AbstractStreamableMedia
- AudioFilters - - filters() -

Returns the available filters.

-
- Audio - - addFilter(FilterInterface $filter) -

{@inheritdoc}

-
- Audio - - save(FormatInterface $format, string $outputPathfile) -

Exports the audio in the desired format, applies registered filters.

-
- Audio - - waveform(integer $width, integer $height) -

Generates an image file representing the waveform of the audio file.

-
- - -

Details

- -

-
in AbstractMediaType at line 29
- public - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
$pathfile -
FFMpegDriver$driver -
FFProbe$ffprobe -
- - - - -
-
- -

-
in AbstractMediaType at line 40
- public FFMpegDriver - getFFMpegDriver() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- -

-
in AbstractMediaType at line 50
- public MediaTypeInterface - setFFMpegDriver(FFMpegDriver $driver) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFMpegDriver$driver -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 60
- public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
in AbstractMediaType at line 70
- public MediaTypeInterface - setFFProbe(FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFProbe$ffprobe -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 80
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in AbstractMediaType at line 90
- public MediaTypeInterface - setFiltersCollection(FiltersCollection $filters) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FiltersCollection$filters -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 100
- public MediaTypeInterface - getFiltersCollection() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

- - public StreamCollection - getStreams() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
StreamCollection -
- - - -
-
- -

- - public Stream - getFormat() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Stream -
- - - -
-
- -

-
at line 31
- public AudioFilters - filters() -

-
-

Returns the available filters.

-

-

-
- -

Return Value

- - - - - - -
AudioFilters -
- - - -
-
- -

-
at line 41
- public Audio - addFilter(FilterInterface $filter) -

-
-

{@inheritdoc}

-

-

-
-

Parameters

- - - - - - - -
FilterInterface$filter -
- - -

Return Value

- - - - - - -
Audio -
- - - -
-
- -

-
at line 62
- public Audio - save(FormatInterface $format, string $outputPathfile) -

-
-

Exports the audio in the desired format, applies registered filters.

-

-

-
-

Parameters

- - - - - - - - - - - - -
FormatInterface$format -
string$outputPathfile -
- - -

Return Value

- - - - - - -
Audio -
- - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- -

-
at line 113
- public Audio - save(FormatInterface $format, string $outputPathfile) -

-
-

Exports the audio in the desired format, applies registered filters.

-

-

-
-

Parameters

- - - - - - - - - - - - -
FormatInterface$format -
string$outputPathfile -
- - -

Return Value

- - - - - - -
Audio -
- - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/Frame.html b/docs/source/API/API/FFMpeg/Media/Frame.html deleted file mode 100644 index ec94835..0000000 --- a/docs/source/API/API/FFMpeg/Media/Frame.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - FFMpeg\Media\Frame | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Media\Frame

-
-
-

class - Frame extends AbstractMediaType

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(Video $video, FFMpegDriver $driver, FFProbe $ffprobe, TimeCode $timecode) -

-

-
- FFMpegDriver - - getFFMpegDriver() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFMpegDriver(FFMpegDriver $driver) -

-

-
from AbstractMediaType
- FFProbe - - getFFProbe() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFProbe(FFProbe $ffprobe) -

-

-
from AbstractMediaType
- string - - getPathfile() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFiltersCollection(FiltersCollection $filters) -

-

-
from AbstractMediaType
- MediaTypeInterface - - getFiltersCollection() -

-

-
from AbstractMediaType
- Video - - getVideo() -

Returns the video related to the frame.

-
- FrameFilters - - filters() -

Returns the available filters.

-
- Frame - - addFilter(FrameFilterInterface $filter) -

{@inheritdoc}

-
- TimeCode - - getTimeCode() -

-

-
- Frame - - save(string $pathfile, Boolean $accurate = false) -

Saves the frame in the given filename.

-
- - -

Details

- -

-
at line 29
- public - __construct(Video $video, FFMpegDriver $driver, FFProbe $ffprobe, TimeCode $timecode) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
Video$video -
FFMpegDriver$driver -
FFProbe$ffprobe -
TimeCode$timecode -
- - - - -
-
- -

-
in AbstractMediaType at line 40
- public FFMpegDriver - getFFMpegDriver() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- -

-
in AbstractMediaType at line 50
- public MediaTypeInterface - setFFMpegDriver(FFMpegDriver $driver) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFMpegDriver$driver -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 60
- public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
in AbstractMediaType at line 70
- public MediaTypeInterface - setFFProbe(FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFProbe$ffprobe -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 80
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in AbstractMediaType at line 90
- public MediaTypeInterface - setFiltersCollection(FiltersCollection $filters) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FiltersCollection$filters -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 100
- public MediaTypeInterface - getFiltersCollection() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
at line 41
- public Video - getVideo() -

-
-

Returns the video related to the frame.

-

-

-
- -

Return Value

- - - - - - -
Video -
- - - -
-
- -

-
at line 51
- public FrameFilters - filters() -

-
-

Returns the available filters.

-

-

-
- -

Return Value

- - - - - - -
FrameFilters -
- - - -
-
- -

-
at line 61
- public Frame - addFilter(FrameFilterInterface $filter) -

-
-

{@inheritdoc}

-

-

-
-

Parameters

- - - - - - - -
FrameFilterInterface$filter -
- - -

Return Value

- - - - - - -
Frame -
- - - -
-
- -

-
at line 71
- public TimeCode - getTimeCode() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
TimeCode -
- - - -
-
- -

-
at line 88
- public Frame - save(string $pathfile, Boolean $accurate = false) -

-
-

Saves the frame in the given filename.

-

Uses the unaccurate method by default.

-
-

Parameters

- - - - - - - - - - - - -
string$pathfile -
Boolean$accurate -
- - -

Return Value

- - - - - - -
Frame -
- - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/MediaTypeInterface.html b/docs/source/API/API/FFMpeg/Media/MediaTypeInterface.html deleted file mode 100644 index 40e5f6f..0000000 --- a/docs/source/API/API/FFMpeg/Media/MediaTypeInterface.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - FFMpeg\Media\MediaTypeInterface | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Interface
-

FFMpeg\Media\MediaTypeInterface

-
-
-

interface - MediaTypeInterface

- - - - -

Methods

- - - - - - - - - - - - -
- - - filters() -

Returns the available filters.

-
- string - - getPathfile() -

-

-
- - -

Details

- -

-
at line 19
- public - filters() -

-
-

Returns the available filters.

-

-

-
- - - -
-
- -

-
at line 24
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/Video.html b/docs/source/API/API/FFMpeg/Media/Video.html deleted file mode 100644 index ede6705..0000000 --- a/docs/source/API/API/FFMpeg/Media/Video.html +++ /dev/null @@ -1,665 +0,0 @@ - - - - - - FFMpeg\Media\Video | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Media\Video

-
-
-

class - Video extends Audio

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-

-
from AbstractMediaType
- FFMpegDriver - - getFFMpegDriver() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFMpegDriver(FFMpegDriver $driver) -

-

-
from AbstractMediaType
- FFProbe - - getFFProbe() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFProbe(FFProbe $ffprobe) -

-

-
from AbstractMediaType
- string - - getPathfile() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFiltersCollection(FiltersCollection $filters) -

-

-
from AbstractMediaType
- MediaTypeInterface - - getFiltersCollection() -

-

-
from AbstractMediaType
- StreamCollection - - getStreams() -

-

-
from AbstractStreamableMedia
- Stream - - getFormat() -

-

-
from AbstractStreamableMedia
- VideoFilters - - filters() -

Returns the available filters.

-
- Video - - addFilter(FilterInterface $filter) -

{@inheritdoc}

-
- Video - - save(FormatInterface $format, string $outputPathfile) -

Exports the video in the desired format, applies registered filters.

-
- Frame - - frame(TimeCode $at) -

Gets the frame at timecode.

-
- - -

Details

- -

-
in AbstractMediaType at line 29
- public - __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - -
$pathfile -
FFMpegDriver$driver -
FFProbe$ffprobe -
- - - - -
-
- -

-
in AbstractMediaType at line 40
- public FFMpegDriver - getFFMpegDriver() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- -

-
in AbstractMediaType at line 50
- public MediaTypeInterface - setFFMpegDriver(FFMpegDriver $driver) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFMpegDriver$driver -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 60
- public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
in AbstractMediaType at line 70
- public MediaTypeInterface - setFFProbe(FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFProbe$ffprobe -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 80
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in AbstractMediaType at line 90
- public MediaTypeInterface - setFiltersCollection(FiltersCollection $filters) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FiltersCollection$filters -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 100
- public MediaTypeInterface - getFiltersCollection() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

- - public StreamCollection - getStreams() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
StreamCollection -
- - - -
-
- -

- - public Stream - getFormat() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
Stream -
- - - -
-
- -

-
at line 34
- public VideoFilters - filters() -

-
-

Returns the available filters.

-

-

-
- -

Return Value

- - - - - - -
VideoFilters -
- - - -
-
- -

-
at line 44
- public Video - addFilter(FilterInterface $filter) -

-
-

{@inheritdoc}

-

-

-
-

Parameters

- - - - - - - -
FilterInterface$filter -
- - -

Return Value

- - - - - - -
Video -
- - - -
-
- -

-
at line 61
- public Video - save(FormatInterface $format, string $outputPathfile) -

-
-

Exports the video in the desired format, applies registered filters.

-

-

-
-

Parameters

- - - - - - - - - - - - -
FormatInterface$format -
string$outputPathfile -
- - -

Return Value

- - - - - - -
Video -
- - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- -

-
at line 180
- public Frame - frame(TimeCode $at) -

-
-

Gets the frame at timecode.

-

-

-
-

Parameters

- - - - - - - -
TimeCode$at -
- - -

Return Value

- - - - - - -
Frame -
- - - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/Waveform.html b/docs/source/API/API/FFMpeg/Media/Waveform.html deleted file mode 100644 index ec94835..0000000 --- a/docs/source/API/API/FFMpeg/Media/Waveform.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - FFMpeg\Media\Frame | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Class
-

FFMpeg\Media\Frame

-
-
-

class - Frame extends AbstractMediaType

- - - - -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - __construct(Video $video, FFMpegDriver $driver, FFProbe $ffprobe, TimeCode $timecode) -

-

-
- FFMpegDriver - - getFFMpegDriver() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFMpegDriver(FFMpegDriver $driver) -

-

-
from AbstractMediaType
- FFProbe - - getFFProbe() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFFProbe(FFProbe $ffprobe) -

-

-
from AbstractMediaType
- string - - getPathfile() -

-

-
from AbstractMediaType
- MediaTypeInterface - - setFiltersCollection(FiltersCollection $filters) -

-

-
from AbstractMediaType
- MediaTypeInterface - - getFiltersCollection() -

-

-
from AbstractMediaType
- Video - - getVideo() -

Returns the video related to the frame.

-
- FrameFilters - - filters() -

Returns the available filters.

-
- Frame - - addFilter(FrameFilterInterface $filter) -

{@inheritdoc}

-
- TimeCode - - getTimeCode() -

-

-
- Frame - - save(string $pathfile, Boolean $accurate = false) -

Saves the frame in the given filename.

-
- - -

Details

- -

-
at line 29
- public - __construct(Video $video, FFMpegDriver $driver, FFProbe $ffprobe, TimeCode $timecode) -

-
-

-

-

-

-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - -
Video$video -
FFMpegDriver$driver -
FFProbe$ffprobe -
TimeCode$timecode -
- - - - -
-
- -

-
in AbstractMediaType at line 40
- public FFMpegDriver - getFFMpegDriver() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFMpegDriver -
- - - -
-
- -

-
in AbstractMediaType at line 50
- public MediaTypeInterface - setFFMpegDriver(FFMpegDriver $driver) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFMpegDriver$driver -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 60
- public FFProbe - getFFProbe() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
FFProbe -
- - - -
-
- -

-
in AbstractMediaType at line 70
- public MediaTypeInterface - setFFProbe(FFProbe $ffprobe) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FFProbe$ffprobe -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 80
- public string - getPathfile() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
string -
- - - -
-
- -

-
in AbstractMediaType at line 90
- public MediaTypeInterface - setFiltersCollection(FiltersCollection $filters) -

-
-

-

-

-

-
-

Parameters

- - - - - - - -
FiltersCollection$filters -
- - -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
in AbstractMediaType at line 100
- public MediaTypeInterface - getFiltersCollection() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
MediaTypeInterface -
- - - -
-
- -

-
at line 41
- public Video - getVideo() -

-
-

Returns the video related to the frame.

-

-

-
- -

Return Value

- - - - - - -
Video -
- - - -
-
- -

-
at line 51
- public FrameFilters - filters() -

-
-

Returns the available filters.

-

-

-
- -

Return Value

- - - - - - -
FrameFilters -
- - - -
-
- -

-
at line 61
- public Frame - addFilter(FrameFilterInterface $filter) -

-
-

{@inheritdoc}

-

-

-
-

Parameters

- - - - - - - -
FrameFilterInterface$filter -
- - -

Return Value

- - - - - - -
Frame -
- - - -
-
- -

-
at line 71
- public TimeCode - getTimeCode() -

-
-

-

-

-

-
- -

Return Value

- - - - - - -
TimeCode -
- - - -
-
- -

-
at line 88
- public Frame - save(string $pathfile, Boolean $accurate = false) -

-
-

Saves the frame in the given filename.

-

Uses the unaccurate method by default.

-
-

Parameters

- - - - - - - - - - - - -
string$pathfile -
Boolean$accurate -
- - -

Return Value

- - - - - - -
Frame -
- - -

Exceptions

- - - - - - -
RuntimeException -
- - -
-
- - -
- - - diff --git a/docs/source/API/API/FFMpeg/Media/namespace-frame.html b/docs/source/API/API/FFMpeg/Media/namespace-frame.html deleted file mode 100644 index c51cf48..0000000 --- a/docs/source/API/API/FFMpeg/Media/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg\Media | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/FFMpeg/namespace-frame.html b/docs/source/API/API/FFMpeg/namespace-frame.html deleted file mode 100644 index 9066151..0000000 --- a/docs/source/API/API/FFMpeg/namespace-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - FFMpeg | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/PROJECT_VERSION b/docs/source/API/API/PROJECT_VERSION deleted file mode 100644 index 8b25206..0000000 --- a/docs/source/API/API/PROJECT_VERSION +++ /dev/null @@ -1 +0,0 @@ -master \ No newline at end of file diff --git a/docs/source/API/API/SAMI_VERSION b/docs/source/API/API/SAMI_VERSION deleted file mode 100644 index 5502090..0000000 --- a/docs/source/API/API/SAMI_VERSION +++ /dev/null @@ -1 +0,0 @@ -1.4-DEV \ No newline at end of file diff --git a/docs/source/API/API/classes-frame.html b/docs/source/API/API/classes-frame.html deleted file mode 100644 index 8257872..0000000 --- a/docs/source/API/API/classes-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - All Classes | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/classes.html b/docs/source/API/API/classes.html deleted file mode 100644 index 7e87425..0000000 --- a/docs/source/API/API/classes.html +++ /dev/null @@ -1,638 +0,0 @@ - - - - - - Classes | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -

Classes

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- FFMpeg\Coordinate\AspectRatio - - - -
- FFMpeg\Coordinate\Dimension - - Dimension object, used for manipulating width and height couples -
- FFMpeg\Coordinate\FrameRate - - - -
- FFMpeg\Coordinate\Point - - - -
- FFMpeg\Coordinate\TimeCode - - - -
- FFMpeg\Driver\FFMpegDriver - - - -
- FFMpeg\Driver\FFProbeDriver - - - -
- FFMpeg\Exception\ExceptionInterface - - - -
- FFMpeg\Exception\ExecutableNotFoundException - - - -
- FFMpeg\Exception\InvalidArgumentException - - - -
- FFMpeg\Exception\LogicException - - - -
- FFMpeg\Exception\RuntimeException - - - -
- FFMpeg\FFMpeg - - - -
- FFMpeg\FFMpegServiceProvider - - - -
- FFMpeg\FFProbe - - - -
- FFMpeg\FFProbe\DataMapping\AbstractData - - - -
- FFMpeg\FFProbe\DataMapping\Format - - - -
- FFMpeg\FFProbe\DataMapping\Stream - - - -
- FFMpeg\FFProbe\DataMapping\StreamCollection - - - -
- FFMpeg\FFProbe\Mapper - - - -
- FFMpeg\FFProbe\MapperInterface - - - -
- FFMpeg\FFProbe\OptionsTester - - - -
- FFMpeg\FFProbe\OptionsTesterInterface - - - -
- FFMpeg\FFProbe\OutputParser - - - -
- FFMpeg\FFProbe\OutputParserInterface - - - -
- FFMpeg\Filters\Audio\AudioFilterInterface - - - -
- FFMpeg\Filters\Audio\AudioFilters - - - -
- FFMpeg\Filters\Audio\AudioResamplableFilter - - - -
- FFMpeg\Filters\Audio\SimpleFilter - - - -
- FFMpeg\Filters\FilterInterface - - - -
- FFMpeg\Filters\FiltersCollection - - - -
- FFMpeg\Filters\Frame\DisplayRatioFixerFilter - - - -
- FFMpeg\Filters\Frame\FrameFilterInterface - - - -
- FFMpeg\Filters\Frame\FrameFilters - - - -
- FFMpeg\Filters\Video\ClipFilter - - - -
- FFMpeg\Filters\Video\CustomFilter - - - -
- FFMpeg\Filters\Video\FrameRateFilter - - - -
- FFMpeg\Filters\Video\ResizeFilter - - - -
- FFMpeg\Filters\Video\RotateFilter - - - -
- FFMpeg\Filters\Video\SynchronizeFilter - - Synchronizes audio and video in case of desynchronized movies. -
- FFMpeg\Filters\Video\VideoFilterInterface - - - -
- FFMpeg\Filters\Video\VideoFilters - - - -
- FFMpeg\Filters\Video\WatermarkFilter - - - -
- FFMpeg\Format\AudioInterface - - - -
- FFMpeg\Format\Audio\Aac - - The AAC audio format -
- FFMpeg\Format\Audio\DefaultAudio - - - -
- FFMpeg\Format\Audio\Flac - - The Flac audio format -
- FFMpeg\Format\Audio\Mp3 - - The MP3 audio format -
- FFMpeg\Format\Audio\Vorbis - - The Vorbis audio format -
- FFMpeg\Format\Audio\Wav - - The WAV audio format -
- FFMpeg\Format\FormatInterface - - - -
- FFMpeg\Format\FrameInterface - - - -
- FFMpeg\Format\ProgressListener\AbstractProgressListener - - - -
- FFMpeg\Format\ProgressListener\AudioProgressListener - - Parses ffmpeg stderr progress information. -
- FFMpeg\Format\ProgressListener\VideoProgressListener - - Parses ffmpeg stderr progress information for video files. -
- FFMpeg\Format\ProgressableInterface - - - -
- FFMpeg\Format\VideoInterface - - - -
- FFMpeg\Format\Video\DefaultVideo - - The abstract default Video format -
- FFMpeg\Format\Video\Ogg - - The Ogg video format -
- FFMpeg\Format\Video\WMV - - The WMV video format -
- FFMpeg\Format\Video\WMV3 - - The WMV video format -
- FFMpeg\Format\Video\WebM - - The WebM video format -
- FFMpeg\Format\Video\X264 - - The X264 video format -
- FFMpeg\Media\AbstractMediaType - - - -
- FFMpeg\Media\AbstractStreamableMedia - - - -
- FFMpeg\Media\Audio - - - -
- FFMpeg\Media\Frame - - - -
- FFMpeg\Media\MediaTypeInterface - - - -
- FFMpeg\Media\Video - - - -
-
- - - diff --git a/docs/source/API/API/css/main.css b/docs/source/API/API/css/main.css deleted file mode 100644 index 17608f6..0000000 --- a/docs/source/API/API/css/main.css +++ /dev/null @@ -1,214 +0,0 @@ -/* -Copyright (c) 2009 Vladimir Kolesnikov - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -a { - color: #00F; - text-decoration: none; -} - -a:hover { - color: #77F; - text-decoration: underline; -} - -body, td, p { - font-family: "Bitstream Vera Sans", Verdana, Arial, Helvetica, sans-serif; - background: #FFF; - color: #000; - margin: 0px; - font-size: small; -} - -p { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -#content { - margin: 2em; - margin-left: 3.5em; - margin-right: 3.5em; -} - -#description p { - margin-bottom: 0.5em; -} - -.sectiontitle { - margin-top: 1em; - margin-bottom: 1em; - padding: 0.5em; - padding-left: 2em; - background: #005; - color: #FFF; - font-weight: bold; -} - -.attr-rw { - padding-left: 1em; - padding-right: 1em; - text-align: center; - color: #055; -} - -.attr-name { - font-weight: bold; -} - -.attr-desc { -} - -.attr-desc p { - margin-top: 0; -} - -.attr-value { - font-family: monospace; -} - -.file-title-prefix { - font-size: large; -} - -.file-title { - font-size: large; - font-weight: bold; - background: #005; - color: #FFF; -} - -.banner { - background: #005; - color: #FFF; - border: 1px solid black; - padding: 1em; -} - -.banner td { - background: transparent; - color: #FFF; -} - -h1 a, h2 a, .sectiontitle a, .banner a { - color: #FF0; -} - -h1 a:hover, h2 a:hover, .sectiontitle a:hover, .banner a:hover { - color: #FF7; -} - -.dyn-source { - display: none; - background: #fffde8; - color: #000; - border: #ffe0bb dotted 1px; - margin: 0.5em 2em 0.5em 2em; - padding: 0.5em; -} - -.dyn-source .cmt { - color: #00F; - font-style: italic; -} - -.dyn-source .kw { - color: #070; - font-weight: bold; -} - -.method { - margin-left: 1em; - margin-right: 1em; - margin-bottom: 1em; -} - -.description pre { - padding: 0.5em; - border: #ffe0bb dotted 1px; - background: #fffde8; -} - -.method .title { - font-family: monospace; - font-size: large; - border-bottom: 1px dashed black; - margin-bottom: 0.3em; - padding-bottom: 0.1em; -} - -.method .description, .method .sourcecode { - margin-left: 1em; -} - -.description p, .sourcecode p { - margin-bottom: 0.5em; -} - -.method .sourcecode p.source-link { - text-indent: 0em; - margin-top: 0.5em; -} - -.method .aka { - margin-top: 0.3em; - margin-left: 1em; - font-style: italic; - text-indent: 2em; -} - -h1 { - padding: 1em; - margin-left: -1.5em; - font-size: x-large; - font-weight: bold; - color: #FFF; - background: #007; -} - -h2 { - padding: 0.5em 1em 0.5em 1em; - margin-left: -1.5em; - font-size: large; - font-weight: bold; - color: #FFF; - background: #009; -} - -h3, h4, h5, h6 { - color: #220088; - border-bottom: #5522bb solid 1px; -} - -.sourcecode > pre { - padding: 0.5em; - border: 1px dotted black; - background: #FFE; -} - -dt { - font-weight: bold -} - -dd { - margin-bottom: 0.7em; -} \ No newline at end of file diff --git a/docs/source/API/API/css/panel.css b/docs/source/API/API/css/panel.css deleted file mode 100644 index b7565b2..0000000 --- a/docs/source/API/API/css/panel.css +++ /dev/null @@ -1,427 +0,0 @@ -/* -Copyright (c) 2009 Vladimir Kolesnikov - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -/* Panel (begin) */ - .panel - { - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - background: #FFF; - z-index: 2; - font-family: "Helvetica Neue", "Arial", sans-serif; - //zoom: 1; - } - - .panel_tree .results, - .panel_results .tree - { - display: none; - } - - /* Header with search box (begin) */ - .panel .header - { - width: 100%; - height: 59px; - border-bottom: 1px solid #666; - position: relative; - left: 0; top: 0; - background: #e8e8e8; - } - - .panel .header div.nav - { - padding-top: 7px; - margin: 0 7px; - } - - .panel .header table - { - height: 29px; - width: 100%; - } - - .panel .header table td - { - vertical-align: middle; - text-align: middle; - } - - .panel .header form - { - float: right; - text-align: bottom; - } - - .panel .header h1 - { - float: left; - font-size: 14px; - font-weight: normal; - color: #777; - text-align: bottom; - } - - .panel .header input - { - width: 100%; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - display: inline-block; - -webkit-appearance: searchfield; - height: 22px; - //height: auto; - } - - /* Header with search box (end) */ - - - /* Results (begin) */ - .panel .result - { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 100%; - //height: expression((this.parentNode.offsetHeight - 31)); - overflow-y: scroll; - overflow-x: hidden; - -overflow-y: hidden; - background: #EDF3FE url(../i/results_bg.png); - z-index: 2; - //zoom:1; - } - - .panel .result ul - { - font-size: 0.8em; - width: 100%; - background: #EDF3FE url(../i/results_bg.png); - //zoom:1; - } - - .panel .result ul li - { - height: 46px; - -height: 50px; - //display: inline; - //width: 100%; - //zoom: 1; - overflow: hidden; - padding: 4px 10px 0 10px; - cursor: pointer; - } - - .panel .result ul li h1 - { - font-size: 13px; - font-weight: normal; - color: #333; - margin-bottom: 2px; - white-space: nowrap; - } - - .panel .result ul li p - { - font-size: 11px; - color: #333; - margin-bottom: 2px; - white-space: nowrap; - } - - .panel .result ul li h1 i, - .panel .result ul li p.snippet - { - color: #999; - } - - .panel .result ul li b - { - color: #000; - } - - .panel .result ul li.current - { - background: #3875D7; - } - - .panel .result ul li.current h1, - .panel .result ul li.current p - { - color: #DDD; - } - - .panel .result ul li.current h1 i, - .panel .result ul li.current p.snippet - { - color: #AAA; - } - - .panel .result ul li.current b - { - color: #FFF; - } - - - .panel .result ul li:hover, - .panel .result ul li.selected - { - background: #d0d0d0; - } - - .panel .result ul li.current:hover - { - background: #2965C0; - } - - .panel .result ul li .badge - { - margin-right: 0.4em; - margin-left: -0.2em; - padding: 0 0.2em; - color: #000; - } - - .panel .result ul li .badge_1 - { - background: #ACDBF4; - } - - .panel .result ul li.current .badge_1 - { - background: #97BFD7; - } - - .panel .result ul li .badge_2 - { - background: #ACF3C3; - } - - .panel .result ul li.current .badge_2 - { - background: #98D7AC; - } - - .panel .result ul li .badge_3 - { - background: #E0F3AC; - } - - .panel .result ul li.current .badge_3 - { - background: #C4D798; - } - - .panel .result ul li .badge_4 - { - background: #D7CA98; - } - - .panel .result ul li.current .badge_4 - { - background: #A6B0AC; - } - - .panel .result ul li .badge_5 - { - background: #F3C8AC; - } - - .panel .result ul li.current .badge_5 - { - background: #D7B198; - } - - .panel .result ul li .badge_6 - { - background: #F3ACC3; - } - - .panel .result ul li.current .badge_6 - { - background: #D798AB; - } - - /* Results (end) */ - - /* Tree (begin) */ /**/ - .panel .tree - { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 100%; - //zoom: 1; - //height: expression((this.parentNode.offsetHeight - 31)); - overflow-y: scroll; - overflow-x: hidden; - -overflow-y: hidden; - background: #EDF3FE url(../i/tree_bg.png); - z-index: 30; - } - - .panel .tree ul - { - background: #EDF3FE url(../i/tree_bg.png); - } - - .panel .tree li - { - cursor: pointer; - overflow: hidden; - //height: 23px; - //display: inline; - //zoom: 1; - //width: 100%; - } - - - .panel .tree li .content - { - padding-left: 18px; - padding-top: 5px; - height: 18px; - overflow: hidden; - position: relative; - } - - .panel .tree li .icon - { - width: 10px; - height: 9px; - background: url(../i/arrows.png); - background-position: 0 -9px; - position: absolute; - left: 1px; - top: 8px; - cursor: default; - } - - .panel .tree li.closed .icon - { - background-position: 0 0; - } - - .panel .tree ul li h1 - { - font-size: 13px; - font-weight: normal; - color: #000; - margin-bottom: 2px; - white-space: nowrap; - } - - .panel .tree ul li p - { - font-size: 11px; - color: #666; - margin-bottom: 2px; - white-space: nowrap; - } - - .panel .tree ul li h1 i - { - color: #999; - font-style: normal; - } - - .panel .tree ul li.empty - { - cursor: text; - } - - .panel .tree ul li.empty h1, - .panel .tree ul li.empty p - { - color: #666; - font-style: italic; - } - - .panel .tree ul li.current - { - background: #3875D7; - } - - .panel .tree ul li.current .icon - { - background-position: -10px -9px; - } - - .panel .tree ul li.current.closed .icon - { - background-position: -10px 0; - } - - .panel .tree ul li.current h1 - { - color: #FFF; - } - - .panel .tree ul li.current p - { - color: #CCC; - } - - .panel .tree ul li.current.empty h1, - .panel .tree ul li.current.empty p - { - color: #999; - } - - .panel .tree ul li:hover - { - background: #d0d0d0; - } - - .panel .tree ul li.current:hover - { - background: #2965C0; - } - - .panel .tree .stopper - { - display: none; - } - /* Tree (end) */ /**/ - -/* Panel (end) */ - - -.panel .loader -{ - text-align: center; - margin-top: 2px; - width: 100%; - height: 59px; -} - -.panel .loader img -{ - vertical-align: middle; -} diff --git a/docs/source/API/API/css/reset.css b/docs/source/API/API/css/reset.css deleted file mode 100644 index 13f8e0a..0000000 --- a/docs/source/API/API/css/reset.css +++ /dev/null @@ -1,53 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ */ -/* v1.0 | 20080212 */ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - background: transparent; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} - -/* remember to define focus styles! */ -:focus { - outline: 0; -} - -/* remember to highlight inserts somehow! */ -ins { - text-decoration: none; -} -del { - text-decoration: line-through; -} - -/* tables still need 'cellspacing="0"' in the markup */ -table { - border-collapse: collapse; - border-spacing: 0; -} \ No newline at end of file diff --git a/docs/source/API/API/doc-index.html b/docs/source/API/API/doc-index.html deleted file mode 100644 index 3fbc8d1..0000000 --- a/docs/source/API/API/doc-index.html +++ /dev/null @@ -1,511 +0,0 @@ - - - - - - Index | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -
Index
- - A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z -
-
-

A

-
AspectRatioClass in namespace FFMpeg\Coordinate
-
-
AbstractDataClass in namespace FFMpeg\FFProbe\DataMapping
-
-
AbstractData::all() — Method in class AbstractData
-
Returns all properties and their values.
StreamCollection::add() — Method in class StreamCollection
-
Adds a stream to the collection.
StreamCollection::audios() — Method in class StreamCollection
-
Returns a new StreamCollection with only audio streams.
StreamCollection::all() — Method in class StreamCollection
-
Returns the array of contained streams.
AudioFilterInterfaceClass in namespace FFMpeg\Filters\Audio
-
-
AudioFilterInterface::apply() — Method in class AudioFilterInterface
-
Applies the filter on the the Audio media given an format.
AudioFiltersClass in namespace FFMpeg\Filters\Audio
-
-
AudioResamplableFilterClass in namespace FFMpeg\Filters\Audio
-
-
AudioResamplableFilter::apply() — Method in class AudioResamplableFilter
-
Applies the filter on the the Audio media given an format.
SimpleFilter::apply() — Method in class SimpleFilter
-
Applies the filter on the the Audio media given an format.
FiltersCollection::add() — Method in class FiltersCollection
-
-
DisplayRatioFixerFilter::apply() — Method in class DisplayRatioFixerFilter
-
-
FrameFilterInterface::apply() — Method in class FrameFilterInterface
-
-
ClipFilter::apply() — Method in class ClipFilter
-
Applies the filter on the the Video media given an format.
CustomFilter::apply() — Method in class CustomFilter
-
Applies the filter on the the Video media given an format.
FrameRateFilter::apply() — Method in class FrameRateFilter
-
Applies the filter on the the Video media given an format.
ResizeFilter::areStandardsForced() — Method in class ResizeFilter
-
-
ResizeFilter::apply() — Method in class ResizeFilter
-
Applies the filter on the the Video media given an format.
RotateFilter::apply() — Method in class RotateFilter
-
Applies the filter on the the Video media given an format.
SynchronizeFilter::apply() — Method in class SynchronizeFilter
-
Applies the filter on the the Video media given an format.
VideoFilterInterface::apply() — Method in class VideoFilterInterface
-
Applies the filter on the the Video media given an format.
VideoFilters::audioResample() — Method in class VideoFilters
-
Resamples the audio file.
WatermarkFilter::apply() — Method in class WatermarkFilter
-
Applies the filter on the the Video media given an format.
AudioInterfaceClass in namespace FFMpeg\Format
-
-
AacClass in namespace FFMpeg\Format\Audio
-
The AAC audio format
AbstractProgressListenerClass in namespace FFMpeg\Format\ProgressListener
-
-
AudioProgressListenerClass in namespace FFMpeg\Format\ProgressListener
-
Parses ffmpeg stderr progress information.
AbstractMediaTypeClass in namespace FFMpeg\Media
-
-
AbstractStreamableMediaClass in namespace FFMpeg\Media
-
-
AudioClass in namespace FFMpeg\Media
-
-
Audio::addFilter() — Method in class Audio
-
{@inheritdoc}
Frame::addFilter() — Method in class Frame
-
{@inheritdoc}
Video::addFilter() — Method in class Video
-
{@inheritdoc}

B

-
FFMpegServiceProvider::boot() — Method in class FFMpegServiceProvider
-
-

C

-
AspectRatio::calculateWidth() — Method in class AspectRatio
-
Computes the best width for given height and modulus.
AspectRatio::calculateHeight() — Method in class AspectRatio
-
Computes the best height for given width and modulus.
AspectRatio::create() — Method in class AspectRatio
-
Creates a ratio based on Dimension.
FFMpegDriver::create() — Method in class FFMpegDriver
-
Creates an FFMpegDriver.
FFProbeDriver::create() — Method in class FFProbeDriver
-
Creates an FFProbeDriver.
FFMpeg::create() — Method in class FFMpeg
-
Creates a new FFMpeg instance.
FFProbe::create() — Method in class FFProbe
-
-
AbstractData::count() — Method in class AbstractData
-
{@inheritdoc}
StreamCollection::count() — Method in class StreamCollection
-
{@inheritdoc}
FiltersCollection::count() — Method in class FiltersCollection
-
{@inheritdoc}
ClipFilterClass in namespace FFMpeg\Filters\Video
-
-
CustomFilterClass in namespace FFMpeg\Filters\Video
-
-
VideoFilters::clip() — Method in class VideoFilters
-
Clips (cuts) the video.
DefaultAudio::createProgressListener() — Method in class DefaultAudio
-
Creates the progress listener.
ProgressableInterface::createProgressListener() — Method in class ProgressableInterface
-
Creates the progress listener.
DefaultVideo::createProgressListener() — Method in class DefaultVideo
-
Creates the progress listener.

D

-
DimensionClass in namespace FFMpeg\Coordinate
-
Dimension object, used for manipulating width and height couples
DisplayRatioFixerFilterClass in namespace FFMpeg\Filters\Frame
-
-
DefaultAudioClass in namespace FFMpeg\Format\Audio
-
-
DefaultVideoClass in namespace FFMpeg\Format\Video
-
The abstract default Video format

E

-
ExceptionInterfaceClass in namespace FFMpeg\Exception
-
-
ExecutableNotFoundExceptionClass in namespace FFMpeg\Exception
-
-

F

-
FrameRateClass in namespace FFMpeg\Coordinate
-
-
TimeCode::fromString() — Method in class TimeCode
-
Creates timecode from string.
TimeCode::fromSeconds() — Method in class TimeCode
-
Creates timecode from number of seconds.
FFMpegDriverClass in namespace FFMpeg\Driver
-
-
FFProbeDriverClass in namespace FFMpeg\Driver
-
-
FFMpegClass in namespace FFMpeg
-
-
FFMpegServiceProviderClass in namespace FFMpeg
-
-
FFProbeClass in namespace FFMpeg
-
-
FFProbe::format() — Method in class FFProbe
-
-
FormatClass in namespace FFMpeg\FFProbe\DataMapping
-
-
StreamCollection::first() — Method in class StreamCollection
-
Returns the first stream of the collection, null if the collection is empty.
FilterInterfaceClass in namespace FFMpeg\Filters
-
-
FiltersCollectionClass in namespace FFMpeg\Filters
-
-
FrameFilterInterfaceClass in namespace FFMpeg\Filters\Frame
-
-
FrameFiltersClass in namespace FFMpeg\Filters\Frame
-
-
FrameFilters::fixDisplayRatio() — Method in class FrameFilters
-
Fixes the display ratio of the output frame.
FrameRateFilterClass in namespace FFMpeg\Filters\Video
-
-
VideoFilters::framerate() — Method in class VideoFilters
-
Changes the video framerate.
FlacClass in namespace FFMpeg\Format\Audio
-
The Flac audio format
FormatInterfaceClass in namespace FFMpeg\Format
-
-
FrameInterfaceClass in namespace FFMpeg\Format
-
-
AbstractProgressListener::forwardedEvents() — Method in class AbstractProgressListener
-
{@inheritdoc}
Audio::filters() — Method in class Audio
-
Returns the available filters.
FrameClass in namespace FFMpeg\Media
-
-
Frame::filters() — Method in class Frame
-
Returns the available filters.
MediaTypeInterface::filters() — Method in class MediaTypeInterface
-
Returns the available filters.
Video::filters() — Method in class Video
-
Returns the available filters.
Video::frame() — Method in class Video
-
Gets the frame at timecode.

G

-
AspectRatio::getValue() — Method in class AspectRatio
-
Returns the value of the ratio.
Dimension::getWidth() — Method in class Dimension
-
Returns width.
Dimension::getHeight() — Method in class Dimension
-
Returns height.
Dimension::getRatio() — Method in class Dimension
-
Returns the ratio.
FrameRate::getValue() — Method in class FrameRate
-
-
Point::getX() — Method in class Point
-
-
Point::getY() — Method in class Point
-
-
FFMpegDriver::getName() — Method in class FFMpegDriver
-
{@inheritdoc}
FFProbeDriver::getName() — Method in class FFProbeDriver
-
{@inheritdoc}
FFMpeg::getFFProbe() — Method in class FFMpeg
-
Gets FFProbe.
FFMpeg::getFFMpegDriver() — Method in class FFMpeg
-
Gets the ffmpeg driver.
FFProbe::getParser() — Method in class FFProbe
-
-
FFProbe::getFFProbeDriver() — Method in class FFProbe
-
-
FFProbe::getOptionsTester() — Method in class FFProbe
-
-
FFProbe::getCache() — Method in class FFProbe
-
-
FFProbe::getMapper() — Method in class FFProbe
-
-
AbstractData::get() — Method in class AbstractData
-
Returns the property value given its name.
Stream::getDimensions() — Method in class Stream
-
Returns the dimension of the video stream.
StreamCollection::getIterator() — Method in class StreamCollection
-
{@inheritdoc}
AudioResamplableFilter::getPriority() — Method in class AudioResamplableFilter
-
Returns the priority of the filter.
AudioResamplableFilter::getRate() — Method in class AudioResamplableFilter
-
-
SimpleFilter::getPriority() — Method in class SimpleFilter
-
Returns the priority of the filter.
FilterInterface::getPriority() — Method in class FilterInterface
-
Returns the priority of the filter.
FiltersCollection::getIterator() — Method in class FiltersCollection
-
{@inheritdoc}
DisplayRatioFixerFilter::getPriority() — Method in class DisplayRatioFixerFilter
-
Returns the priority of the filter.
ClipFilter::getPriority() — Method in class ClipFilter
-
Returns the priority of the filter.
ClipFilter::getStart() — Method in class ClipFilter
-
-
ClipFilter::getDuration() — Method in class ClipFilter
-
-
CustomFilter::getPriority() — Method in class CustomFilter
-
Returns the priority of the filter.
FrameRateFilter::getPriority() — Method in class FrameRateFilter
-
Returns the priority of the filter.
FrameRateFilter::getFrameRate() — Method in class FrameRateFilter
-
Returns the frame rate.
FrameRateFilter::getGOP() — Method in class FrameRateFilter
-
Returns the GOP size.
ResizeFilter::getPriority() — Method in class ResizeFilter
-
Returns the priority of the filter.
ResizeFilter::getDimension() — Method in class ResizeFilter
-
-
ResizeFilter::getMode() — Method in class ResizeFilter
-
-
RotateFilter::getPriority() — Method in class RotateFilter
-
Returns the priority of the filter.
RotateFilter::getAngle() — Method in class RotateFilter
-
-
SynchronizeFilter::getPriority() — Method in class SynchronizeFilter
-
Returns the priority of the filter.
WatermarkFilter::getPriority() — Method in class WatermarkFilter
-
Returns the priority of the filter.
AudioInterface::getAudioKiloBitrate() — Method in class AudioInterface
-
Gets the audio kiloBitrate value.
AudioInterface::getAudioChannels() — Method in class AudioInterface
-
Gets the audio channels value.
AudioInterface::getAudioCodec() — Method in class AudioInterface
-
Returns the audio codec.
AudioInterface::getAvailableAudioCodecs() — Method in class AudioInterface
-
Returns the list of available audio codecs for this format.
Aac::getAvailableAudioCodecs() — Method in class Aac
-
Returns the list of available audio codecs for this format.
DefaultAudio::getExtraParams() — Method in class DefaultAudio
-
Returns an array of extra parameters to add to ffmpeg commandline.
DefaultAudio::getAudioCodec() — Method in class DefaultAudio
-
Returns the audio codec.
DefaultAudio::getAudioKiloBitrate() — Method in class DefaultAudio
-
Gets the audio kiloBitrate value.
DefaultAudio::getAudioChannels() — Method in class DefaultAudio
-
Gets the audio channels value.
DefaultAudio::getPasses() — Method in class DefaultAudio
-
Returns the number of passes.
Flac::getAvailableAudioCodecs() — Method in class Flac
-
Returns the list of available audio codecs for this format.
Mp3::getAvailableAudioCodecs() — Method in class Mp3
-
Returns the list of available audio codecs for this format.
Vorbis::getExtraParams() — Method in class Vorbis
-
Returns an array of extra parameters to add to ffmpeg commandline.
Vorbis::getAvailableAudioCodecs() — Method in class Vorbis
-
Returns the list of available audio codecs for this format.
Wav::getAvailableAudioCodecs() — Method in class Wav
-
Returns the list of available audio codecs for this format.
FormatInterface::getPasses() — Method in class FormatInterface
-
Returns the number of passes.
FormatInterface::getExtraParams() — Method in class FormatInterface
-
Returns an array of extra parameters to add to ffmpeg commandline.
AbstractProgressListener::getFFProbe() — Method in class AbstractProgressListener
-
-
AbstractProgressListener::getPathfile() — Method in class AbstractProgressListener
-
-
AbstractProgressListener::getCurrentPass() — Method in class AbstractProgressListener
-
-
AbstractProgressListener::getTotalPass() — Method in class AbstractProgressListener
-
-
AudioProgressListener::getPattern() — Method in class AudioProgressListener
-
-
VideoProgressListener::getPattern() — Method in class VideoProgressListener
-
-
VideoInterface::getKiloBitrate() — Method in class VideoInterface
-
Gets the kiloBitrate value.
VideoInterface::getModulus() — Method in class VideoInterface
-
Returns the modulus used by the Resizable video.
VideoInterface::getVideoCodec() — Method in class VideoInterface
-
Returns the video codec.
VideoInterface::getAvailableVideoCodecs() — Method in class VideoInterface
-
Returns the list of available video codecs for this format.
DefaultVideo::getKiloBitrate() — Method in class DefaultVideo
-
Gets the kiloBitrate value.
DefaultVideo::getVideoCodec() — Method in class DefaultVideo
-
Returns the video codec.
DefaultVideo::getModulus() — Method in class DefaultVideo
-
-
Ogg::getAvailableAudioCodecs() — Method in class Ogg
-
Returns the list of available audio codecs for this format.
Ogg::getAvailableVideoCodecs() — Method in class Ogg
-
Returns the list of available video codecs for this format.
WMV::getAvailableAudioCodecs() — Method in class WMV
-
Returns the list of available audio codecs for this format.
WMV::getAvailableVideoCodecs() — Method in class WMV
-
Returns the list of available video codecs for this format.
WMV3::getAvailableAudioCodecs() — Method in class WMV3
-
Returns the list of available audio codecs for this format.
WMV3::getAvailableVideoCodecs() — Method in class WMV3
-
Returns the list of available video codecs for this format.
WebM::getExtraParams() — Method in class WebM
-
Returns an array of extra parameters to add to ffmpeg commandline.
WebM::getAvailableAudioCodecs() — Method in class WebM
-
Returns the list of available audio codecs for this format.
WebM::getAvailableVideoCodecs() — Method in class WebM
-
Returns the list of available video codecs for this format.
X264::getAvailableAudioCodecs() — Method in class X264
-
Returns the list of available audio codecs for this format.
X264::getAvailableVideoCodecs() — Method in class X264
-
Returns the list of available video codecs for this format.
X264::getPasses() — Method in class X264
-
Returns the number of passes.
X264::getModulus() — Method in class X264
-
-
AbstractMediaType::getFFMpegDriver() — Method in class AbstractMediaType
-
-
AbstractMediaType::getFFProbe() — Method in class AbstractMediaType
-
-
AbstractMediaType::getPathfile() — Method in class AbstractMediaType
-
-
AbstractMediaType::getFiltersCollection() — Method in class AbstractMediaType
-
-
AbstractStreamableMedia::getStreams() — Method in class AbstractStreamableMedia
-
-
AbstractStreamableMedia::getFormat() — Method in class AbstractStreamableMedia
-
-
Frame::getVideo() — Method in class Frame
-
Returns the video related to the frame.
Frame::getTimeCode() — Method in class Frame
-
-
MediaTypeInterface::getPathfile() — Method in class MediaTypeInterface
-
-

H

-
AbstractData::has() — Method in class AbstractData
-
Returns true if data has property.
OptionsTester::has() — Method in class OptionsTester
-
Tells if the given option is supported by ffprobe.
OptionsTesterInterface::has() — Method in class OptionsTesterInterface
-
Tells if the given option is supported by ffprobe.
AbstractProgressListener::handle() — Method in class AbstractProgressListener
-
{@inheritdoc}

I

-
InvalidArgumentExceptionClass in namespace FFMpeg\Exception
-
-
Stream::isAudio() — Method in class Stream
-
Returns true if the stream is an audio stream.
Stream::isVideo() — Method in class Stream
-
Returns true if the stream is a video stream.

K

-
AbstractData::keys() — Method in class AbstractData
-
Returns all property names.

L

-
LogicExceptionClass in namespace FFMpeg\Exception
-
-

M

-
MapperClass in namespace FFMpeg\FFProbe
-
-
Mapper::map() — Method in class Mapper
-
Maps data given its type.
MapperInterfaceClass in namespace FFMpeg\FFProbe
-
-
MapperInterface::map() — Method in class MapperInterface
-
Maps data given its type.
Mp3Class in namespace FFMpeg\Format\Audio
-
The MP3 audio format
MediaTypeInterfaceClass in namespace FFMpeg\Media
-
-

O

-
FFMpeg::open() — Method in class FFMpeg
-
Opens a file in order to be processed.
OptionsTesterClass in namespace FFMpeg\FFProbe
-
-
OptionsTesterInterfaceClass in namespace FFMpeg\FFProbe
-
-
OutputParserClass in namespace FFMpeg\FFProbe
-
-
OutputParserInterfaceClass in namespace FFMpeg\FFProbe
-
-
OggClass in namespace FFMpeg\Format\Video
-
The Ogg video format

P

-
PointClass in namespace FFMpeg\Coordinate
-
-
OutputParser::parse() — Method in class OutputParser
-
Parses ffprobe raw output.
OutputParserInterface::parse() — Method in class OutputParserInterface
-
Parses ffprobe raw output.
ProgressableInterfaceClass in namespace FFMpeg\Format
-
-

R

-
RuntimeExceptionClass in namespace FFMpeg\Exception
-
-
FFMpegServiceProvider::register() — Method in class FFMpegServiceProvider
-
-
AudioFilters::resample() — Method in class AudioFilters
-
Resamples the audio file.
ResizeFilterClass in namespace FFMpeg\Filters\Video
-
-
RotateFilterClass in namespace FFMpeg\Filters\Video
-
-
VideoFilters::resize() — Method in class VideoFilters
-
Resizes a video to a given dimension.
VideoFilters::rotate() — Method in class VideoFilters
-
-

S

-
FFMpeg::setFFProbe() — Method in class FFMpeg
-
Sets FFProbe.
FFMpeg::setFFMpegDriver() — Method in class FFMpeg
-
Sets the ffmpeg driver.
FFProbe::setParser() — Method in class FFProbe
-
-
FFProbe::setFFProbeDriver() — Method in class FFProbe
-
-
FFProbe::setOptionsTester() — Method in class FFProbe
-
-
FFProbe::setCache() — Method in class FFProbe
-
-
FFProbe::setMapper() — Method in class FFProbe
-
-
FFProbe::streams() — Method in class FFProbe
-
-
AbstractData::set() — Method in class AbstractData
-
Sets the property value given its name.
StreamClass in namespace FFMpeg\FFProbe\DataMapping
-
-
StreamCollectionClass in namespace FFMpeg\FFProbe\DataMapping
-
-
SimpleFilterClass in namespace FFMpeg\Filters\Audio
-
-
SynchronizeFilterClass in namespace FFMpeg\Filters\Video
-
Synchronizes audio and video in case of desynchronized movies.
VideoFilters::synchronize() — Method in class VideoFilters
-
Synchronizes audio and video.
DefaultAudio::setAudioCodec() — Method in class DefaultAudio
-
Sets the audio codec, Should be in the available ones, otherwise an exception is thrown.
DefaultAudio::setAudioKiloBitrate() — Method in class DefaultAudio
-
Sets the kiloBitrate value.
DefaultAudio::setAudioChannels() — Method in class DefaultAudio
-
Sets the channels value.
VideoInterface::supportBFrames() — Method in class VideoInterface
-
Returns true if the current format supports B-Frames.
DefaultVideo::setKiloBitrate() — Method in class DefaultVideo
-
Sets the kiloBitrate value.
DefaultVideo::setVideoCodec() — Method in class DefaultVideo
-
Sets the video codec, Should be in the available ones, otherwise an exception is thrown.
Ogg::supportBFrames() — Method in class Ogg
-
Returns true if the current format supports B-Frames.
WMV::supportBFrames() — Method in class WMV
-
Returns true if the current format supports B-Frames.
WMV3::supportBFrames() — Method in class WMV3
-
Returns true if the current format supports B-Frames.
WebM::supportBFrames() — Method in class WebM
-
Returns true if the current format supports B-Frames.
X264::supportBFrames() — Method in class X264
-
Returns true if the current format supports B-Frames.
X264::setBFramesSupport() — Method in class X264
-
-
AbstractMediaType::setFFMpegDriver() — Method in class AbstractMediaType
-
-
AbstractMediaType::setFFProbe() — Method in class AbstractMediaType
-
-
AbstractMediaType::setFiltersCollection() — Method in class AbstractMediaType
-
-
Audio::save() — Method in class Audio
-
Exports the audio in the desired format, applies registered filters.
Frame::save() — Method in class Frame
-
Saves the frame in the given filename.
Video::save() — Method in class Video
-
Exports the video in the desired format, applies registered filters.

T

-
TimeCodeClass in namespace FFMpeg\Coordinate
-
-

V

-
StreamCollection::videos() — Method in class StreamCollection
-
Returns a new StreamCollection with only video streams.
VideoFilterInterfaceClass in namespace FFMpeg\Filters\Video
-
-
VideoFiltersClass in namespace FFMpeg\Filters\Video
-
-
VorbisClass in namespace FFMpeg\Format\Audio
-
The Vorbis audio format
VideoProgressListenerClass in namespace FFMpeg\Format\ProgressListener
-
Parses ffmpeg stderr progress information for video files.
VideoInterfaceClass in namespace FFMpeg\Format
-
-
VideoClass in namespace FFMpeg\Media
-
-

W

-
VideoFilters::watermark() — Method in class VideoFilters
-
-
WatermarkFilterClass in namespace FFMpeg\Filters\Video
-
-
WavClass in namespace FFMpeg\Format\Audio
-
The WAV audio format
WMVClass in namespace FFMpeg\Format\Video
-
The WMV video format
WMV3Class in namespace FFMpeg\Format\Video
-
The WMV video format
WebMClass in namespace FFMpeg\Format\Video
-
The WebM video format

X

-
X264Class in namespace FFMpeg\Format\Video
-
The X264 video format

_

-
AspectRatio::__construct() — Method in class AspectRatio
-
-
Dimension::__construct() — Method in class Dimension
-
-
FrameRate::__construct() — Method in class FrameRate
-
-
Point::__construct() — Method in class Point
-
-
TimeCode::__construct() — Method in class TimeCode
-
-
TimeCode::__toString() — Method in class TimeCode
-
-
FFMpeg::__construct() — Method in class FFMpeg
-
-
FFProbe::__construct() — Method in class FFProbe
-
-
AbstractData::__construct() — Method in class AbstractData
-
-
StreamCollection::__construct() — Method in class StreamCollection
-
-
OptionsTester::__construct() — Method in class OptionsTester
-
-
AudioFilters::__construct() — Method in class AudioFilters
-
-
AudioResamplableFilter::__construct() — Method in class AudioResamplableFilter
-
-
SimpleFilter::__construct() — Method in class SimpleFilter
-
-
DisplayRatioFixerFilter::__construct() — Method in class DisplayRatioFixerFilter
-
-
FrameFilters::__construct() — Method in class FrameFilters
-
-
ClipFilter::__construct() — Method in class ClipFilter
-
-
CustomFilter::__construct() — Method in class CustomFilter
-
A custom filter, useful if you want to build complex filters
FrameRateFilter::__construct() — Method in class FrameRateFilter
-
-
ResizeFilter::__construct() — Method in class ResizeFilter
-
-
RotateFilter::__construct() — Method in class RotateFilter
-
-
SynchronizeFilter::__construct() — Method in class SynchronizeFilter
-
-
VideoFilters::__construct() — Method in class VideoFilters
-
-
WatermarkFilter::__construct() — Method in class WatermarkFilter
-
-
Aac::__construct() — Method in class Aac
-
-
Flac::__construct() — Method in class Flac
-
-
Mp3::__construct() — Method in class Mp3
-
-
Vorbis::__construct() — Method in class Vorbis
-
-
Wav::__construct() — Method in class Wav
-
-
AbstractProgressListener::__construct() — Method in class AbstractProgressListener
-
-
Ogg::__construct() — Method in class Ogg
-
-
WMV::__construct() — Method in class WMV
-
-
WMV3::__construct() — Method in class WMV3
-
-
WebM::__construct() — Method in class WebM
-
-
X264::__construct() — Method in class X264
-
-
AbstractMediaType::__construct() — Method in class AbstractMediaType
-
-
Frame::__construct() — Method in class Frame
-
-
- - - diff --git a/docs/source/API/API/i/arrows.png b/docs/source/API/API/i/arrows.png deleted file mode 100644 index e54060f44ce73e7acfb92725eabea5440a0f9f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmV<30V4j1P)dbVG7wVRUJ4ZXi@?ZDjy6FEKPPFgfE{K9m3e0X9iQ zK~y-6t(3uW!Y~j;-+EF29Y8t>owx*MmOJ5Y&5#P>PN0L70CZp~_#AB6im~h*@-MRG zr}baWmym=c-2LqC8#0QVq_d4h^%0POdBCG!pN1)M?% zO>`K|PH|?|j2)(00SDm6-OCxbJtwIIc$f?6>;cm)*T8O}P|w9eQE9;oZF~2HLKoWhCOJ#u@GmlVKhuUa>!_-# zEwIP|+X5&Tep-&kS+3~ztj<7nRaJL@ZqKqDaEIZf>}Vs9s_EuaEpi1w7m?Ele92%J zkrytFj-_AR{Yra`ZXtws7%l~~0hQEqX7-C4AHC1fnA2Z5aQ8#{9xv9hBu#Qp(hi|Z Tx-exV00000NkvXXu0mjf5Awjp diff --git a/docs/source/API/API/i/loader.gif b/docs/source/API/API/i/loader.gif deleted file mode 100644 index e2a116c7280b4d9786ddb960fff4439a542866ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 zcmb{2`Cn6a{x9%PPI4d%kdU0PCU_De9uN{XAs}iv1c-u|08&I`*Mdc)ik5b4C!8!~ z0g?bJi&{1K;Tc_j9^tSf_*!K3`$9+8PJihz^{P4`{ z{W_m5acP1yDjx+X_z{3#e)$Ce@b7>B`_`>nw{PG6>8GE1dwbPtwaH}a@9+Qd#~-Jr zrVIwdJMX;H*4FmrmtU5bm#3zt5(M$!!GrI=|9;!HZ5({TJ zn3#C>?Acpyy|r)OzUR-M4-XH=#Ke@AmOgy=aL=ASm6er!eSJ4>+z1a3mrA9F4jsC5 z>C(u^$hY5qd-LYa;NaksCr_R|d$zl~`^l3hWo2dc_4VW9{_yhz5T)A>(XlSUoxcJnmQ|s2P3k(cAaNvN4heuvs z9*@VXsHoVwb?b=}C;a^Uv|8=r#fxidYMh*$z#snvzc5nb)6?Q&mGPnCU@{2+Ao$rU zZqwTQinT@P8zmLRX#V>A%F>PbMdFgObsK@;UlbY)00^A^Khr-VaQsCL2#r>!uQnJ> z=9=0%i`7=IWkf}UHxNvBfd*a>y^!5ZXL$(S2t>GW(SkizhO4KCrwc&54lf}Xkus;_g6g(~zaZ;OSQewmn%bY!&L;+OBT9FId4B#45T;zSJ6=Z9rIrk9iN07JGwhNB?_wWSdc#`ip@!3OQ$ZK zLN(lS{jzFYaZS%S``O)(PapmKyxI|lUPekUN?C$fYS}Ssowl3#Nipk|p{*J`6w`z+ zk9jqj-U(1@USS-;Pd}*a0Q~LZ-29?E_hUr|vtc?rOa|A%@`A!OYXZTN#l>?#L_rWH zwuqbxvRxGb5(tQuX&BaM;ZSdc=w%X2+9{rwcFk!^+i}{EIDzDDvmP(F*r=(d15cSO zN9YzOKGZZ2>q@J{q66OA)bW7!j!~;dnhk>hk+k>+s5LT{IV^Y4=CMaCc-M8J-{}>D zb}`!Orrw1Px1l_=O3bD=w2hI@r4RZ(9KNV_7g1c*)kr_#9ZNxCDm9PWw9y<=vU;AV zYzWT&=HZOgxhn8-PAgpyOD#2XapHC}y)d(E4ce-KBV#p4QD*TndM7bIm$jPUXCHL! z08G9Gj>z@)E(K`9!33D@T;?jZxclV3wjl_(czSFEimXNDX%_JkA69`2fP+ei4U5($ zhHq!cznG^_%#>emMFb_V6AcKDrjkf?P$=}2xQHNB4i|)~!Q6Q1EuHdxnJW!JqXJt1 zyNeNzFEgc!z~x$Rj@$J74aYYhW%o{PF$^xxja8nNt}+ZU5Lv|A6wmiF<-ECn4Hf#Q z?-}zxm)dejp5G7H1XZ0(&#T&Ruu$60h3rUA!P8l~vy0O6NMo~O_sYhX8aqAi7RR^L zDpbPw?PmIGD$m!^RxL``@C&>=^Y(QDraWamvD+)4umdo}+i6rsXBt3RULL-H&h}r% zv#f}4a`wSMm{Ju7R&H7qy~M(IPl@uG58%`lgzsn3?%T!pqXP920#T=sGsX{U#Qi{-~4U?N}v+v z_7$ZVL9cLCzShCWEmNh|adMU@N&w{Sy0ik&bJxDQDWz||TYL%yY{_#i1xvPG%h*zf zrfqbISPfvwaVTNkrt$>Df~?;-_na>ANrI>qjU{*;Pc9KwRjo{kjT$HyU558r zyjBq`7+g-+Q|D8>ZOk@RYxY|}f15(|gTDf5aX3A1z!^=RKSn7peBAcI0)&)2S{Zz# z9TJ_oJ=;ldlSwZH1(V5^x>DZ_p^awLX+xnS++w7^u_qTL(9k%lE3cP#XVQu|HgV$1m5hno;t5_({fZFColQHsW%>(u`smBWsTzeW zb+PeFWDPZQxVdwhP0$i9%c&kfv{JqW#={9n-sxD6zoGI}SYlTQqyTo|E=YvYsLBBU zf_-L4f(50CfZ&aaAQ0B$pXp+eVX1;hg3|<7c=`wD9;`!olMKDwe=!ShK73Tq-!eaY z+j>d?u{Z&zvYL(+;~tS-MS&2>88*FR_Eag(D&30N$c_qX$h%S0=Mg)WDG#CP9E?2~`5()+|r< z3bV+rVN60a3A1lka=YtL-gU7)C%Mw+i4_))>G`X-gzv7AB~M*cP^TwtQL(0q)*25v zsQlEtX(Z^r49T(4&`c9otlGy3= zJJWr1oo2p174g=^BI_ST`pl5o9y(St`;SUjSq z&s+VZ)dVqP@k>T63k}Y9wR(A_i~d!A-Kr+t_VVg2d{1bZAIj#co01Czly!K^@j{u6 z0Y%aS-a00rbNo^$Q(@_CnyZQ5N23KH@>kEISF$~XHhYqH`v)iYQv@7YgujbY_Leo7 z4^~H3(8qQ>a-}wY4p<5Y`6%Hn1(UoA&13X~e{=jqkD}jKlGutzGlQ1f_tH)%WUIkf z1d6tsC?%nR8ki@up|B>h#37X6Z}jmCvfz?PoY=iO4Z!pLSg*NQW{vP52M$=z?Jrnu zkzT}@1U;N^$$c$BLARhok~_N9-mgb|Wr4-RdNgp}(^eD2kjZ{D;1o)W|739WGPYlV zQp67K&-ySfDz&R0cOCSXQ+NTr_xBYhQcc;c9zn3H3w2qevN_Jaryb%Kx2;>M-TYzC}r4H#(Sn_#x;bY@G`*W<}^c`a7$sB9`w0(y)O*)Np7( zV@36Wrd2s&#Bn*cb$(epB&vDQ+^x_{HMhlTfNix%B!%8+;$aw1i#Ax{4nWy0A?P%@ zdvjfQWF$_!mr4e3XkwHjW{K@a08YllAT`3t+428ccphvfi_~q=aL3c?m=+-+{ zxbSVT_?`}3A^57r42h)DM+Py4!ZFJn3yXSX{oAL~=Xsgxf{lYpjbprn3QcaDr-?T+ zIV!YV^KJ*tXIM>2ySFL^hodVhKf(BCaj0OZ^6PHdG52A5$T8t%MM|Qm>rIM4rflM8 z9XeL^3~+I_q-^xz3DqTNXdqm@dETZM%^Rh}^7+mye*pa)_ zowOIBzFZ~Q>a}#43~DgSFpSx(fng107mt9+X%s7enx_kkC02yFxP)7zyCi&olgS8( zo$nIAQf%Su!WaaE5`k{6la0TVZ4gs)dAuE4Ku3cyvPP6M@qFdbGNt5pXuaX$v<&-LdC1zb z(b@wVx8%S4-3dNq)6%V0~605)B(?Oc-)UA3uf6bQ}vu z-X1@;uQpcn^A0%qLEcDHu*(Ll{*BH(LUv-`w&p@|buUgwx(dUO>=e*9ikr5jqlyT3 zeO=E$=vSZkvOf+asF<3;3|~BjRdxlgma!#$$4F|eqh)?(N(>Zhcc5irF;@RJds6dz zIYJ}5f(+XZgW}5mj-vi~Yupiodb0czrD5$BSbR&5?|j$% z9)H3x1BB0yPl=dw*mx8RH-$JlbGbgNk-H!7oEqGzaV*4A-{{;e6v#yrXYK=T6pn^& z-F*CGtC?FGy_JDq6$-pP!^49=H4KGRuUO`9C*t8fWTEGx;q6QVJ)Cs#c|Sq2>`X*6 zY^-Pa#kvq!R_S5N*Q$#(S6%e>Q2V6Yd+={v^Mr*uKksc9AXadZ|VB z%;^X$5;d5l7{+KaP+EB!KHo;?QE;MdMnrdEFRS(;d^T6$Yt{k3O{ZBocXEdL)aZ-;L3P~V#$+t&p)qDbNbmSA{%4B(K*o{ zsVHUTUp{OFFtpnzPV9o{-%gT*)W z$oqTD5DM2!(|j&jPYWC|9>VS#BDci3yU#O!_q00I?PoU!Hhh)4$fBcUrI)lbnlSvfu>j$vPbjIyKN{rn8AK6@} zNgDD3CMM%bDF%cV_PbHSXcI<>yAd&2JkfsRi`w^GGb$TBZVIk8HaGc=m#c5J-#J|l z-@mf`Pc$+t!W&G?-(}!wnVn!dGE7M%-`avn-p9$22*6u0=C3lG^9Sl+-l?;?nUk}b zMPT@z8hGyvj2V`Z$+BV7A?&V^xgw~f9KHhpTlmZyLZW3nu`oDZ}Afk5G+b* zb=}O4fu7<{WD-(8UX?$XxjlHvUuA5ilcU?h#kbK;`;em5qsgti|G-KsQ5)i`QWjjk z%CFY3#P;@jhq87@(c_1AKi;W)sh$0cxf0JHiDu^tnn9YKD<+wOP9sf!uV&)IurkgM zfUapH3(Pxp?pLEx{j|~E+L^I}WgmWGK7>seFP#7M-SgiVzH5D2jqoBLnBZ86L)W8( zCs{0#Ue?xA#Y%l&nE8%J{XqXEH`uC0gWo3;$HOHxQTxlkqPFU5*JXZ9deuQK^lTJ? zygZkWVuF13eq{Hvs9lm$?Pm%{KISpm<1*n>8H?uUFW=_>$pB$om>RsOHtT+?+WScG znc{k(hDPXO_+0$lEum5kt@tCv`uvz*JBFyzI@6*h`Q2gznqQ!5z$t1OVybF&hXnRMLJo9fDE6#5<^gdF<1po=o> zpOdj`{9g)c2oMie7&mJh)$X(d`I}tdOKOVo{BVqQ|C59PJn^iT)cYHPw6E0R{*~Pf z^d+~awtDUVKR1j>S(oLvnd)i9&d%oM1gEdR4(5GuMe`yy*R|8JIq_R;_L~o4cZ{OG z$j=Pq^|X-PM*O>{)j|2o{Z6x|PY0?^A>F7PYf_rU*(t&yrS zO?0RVo%ywMtAGl8bWs``jvi``(+ULi&9}B4&)Z=of3V*9wo3=9(Sb9SKYZ!@@{7X% zL7_8|)4klg(}d?OTfmMqiTWsJk^iDa3+GHdt#MEGUocLe7E<)b@v|%MuPY{W9;nM1 zsUvOJV@|;LT%uZd%U7^rTNlgb2%-vr+UYM3D3=u27Eo$a?&T&T9bQ%TdSM*m2+M+t z?GLnVv>QG#1=d(ig8>nR4|CF3u&EXsmbUjl-0eWs2a6~|=6Fyc%~NU@y_(g)bL>91 zJ85UxpQz+Nw9Xztk9|?dB8m+Dy>w2uVjo%<=NJTZ9B|H^uY-9f|BxOV-d%gCX1+)8 zYrBoG?93e#?y>N@jV94Kidp2jYE^mI<8vM6xE4c`=CG2)qYy|;S3lgN())}AgGrW7 zXD&bKO8SBjuy5ooVnZY*CtzjP8VJb8I|KZ-mxln^Rg2()_8Bxum3#Xw?;XKVwZi6^ zN?BC-ba1uryyZgHe#M0Z8#B;hixTX=fGo%+RbZ(@W-o)5vJERB!CAP}SuD!@XU6D- z-pU_t{nzRF?}fzELUBS5-)SK-Wn7O}W|Wt^n?&b2Ot@;@y0sgh|5#H{v2?PEKbJ=# zJi@!w4m~QpTebqVvvfL>--v2ZS1VxOP|G%{s_4zq9Lksyr79#FYk7eJ&N{6ZNG<64 zbZ*z*DT(NpquHEJwOSB&Q%QbezX)pd25rd?`wFT(6SLOktG*6n*aQ`sinp%r{t=M@Bd*Px4 zCIOw~3|y#_E?u~G#q7nZbV=z+-Lz8p4yg8XW1#o)Q37P*14px{%#JR!K z0!^&O1)V^&sZWS1k%@^XB(-0`|Dq;tr+m zT2%~NNsq}(4vIPO1-FU zvZV=}dgJXbXOSR>;*9hJ6>Xh4&+z&0gb;jIC}_EV{LEH#riXl1MQ1q7tPE#_oXWEn zvI*!Um?26pe|7dUwVpF~^~fv{9&R^%Z7A7Xl;rBuJ`*Iq5nZ5Cd3jYDFrn*Xu8>sG zf~8C2Y}Py(vNU9D-&Lyj4=irKfH5RwiL+&4TMP*;-j66MkFSSyx|k(p9zt8tq%Uh@ zUHZS&IE!ilrg0S<(k7&@*1uopks|KXECyMR9GqcYsnT_wkfPBd?;n2g))e+Q`TRB-wIL{Y}gsHa8Q zBP0R8toOk%?Cn{S0~N2`G*F8|=%&k5Ue|B1M0LY&wL}9PBo|C57)_iT@Ka zOm}gEmch~HE>9ITfwZNSa|tA1St_rcTlPws93Y-WSnN!SEGfZdTZH{cC9XQY_Z#{5_66_RLu{!ev6Eoe=tfCH?vqN-%T4)F@*@d-V(84 z$RoegFcg9QY~9u@wPkj!9YOsjl`sjK=ibW?P#3xz;-P4zhsQD-#KT!C*4I?IfwDr( z6{=G1ceO%vg)$u^N?0`rCTlLS0e4@fiu$}8 zIL=%aR+R}wW!L^`A%+^;rkK$(;gisdGC cVuwzJi|kdmKPY#czEXXq3vbh#=yWJYAJP#fq{Xg*vT`5gM)*kh9jke zfq{Xuz$3Dlfr0A-2s1jZF`2=@z#voN8c`CQpH@&nt_3V;lKiB1_p;FM|K8=28L!n1_lO3HdzJ+ z1|}XWkeek+7#J8h3_zX{NVverz@Pxp&@iGj41Mt92Q@pScbS?83{ F1OVTLWh4Lq diff --git a/docs/source/API/API/i/tree_bg.png b/docs/source/API/API/i/tree_bg.png deleted file mode 100644 index 7d236633d723288991f4cafe4ee2908c6746d0e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnV9?`WV_;x-z;aoDfq{Xg*vT`5gM)*kh9jke zfq{Xuz$3DlfkAo?2s7^5zF;>41A|P7YeY$Kep*R+Vo@rCV@iHfs)Ac)QEGX9QFgI{ zbFlG@Yi`U83=E?ClK5YO1 diff --git a/docs/source/API/API/index.html b/docs/source/API/API/index.html deleted file mode 100644 index 503128a..0000000 --- a/docs/source/API/API/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - PHP-FFMpeg API - - - - - - - - - - <body> - Your browser does not support frames. Go to the <a href="namespaces.html">non-frame version</a>. - </body> - - - diff --git a/docs/source/API/API/interfaces.html b/docs/source/API/API/interfaces.html deleted file mode 100644 index 207e629..0000000 --- a/docs/source/API/API/interfaces.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Interfaces | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -

Interfaces

-
- - - - diff --git a/docs/source/API/API/js/jquery-1.3.2.min.js b/docs/source/API/API/js/jquery-1.3.2.min.js deleted file mode 100644 index b1ae21d..0000000 --- a/docs/source/API/API/js/jquery-1.3.2.min.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * jQuery JavaScript Library v1.3.2 - * http://jquery.com/ - * - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - * - * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) - * Revision: 6246 - */ -(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/docs/source/API/API/js/permalink.js b/docs/source/API/API/js/permalink.js deleted file mode 100644 index 959137d..0000000 --- a/docs/source/API/API/js/permalink.js +++ /dev/null @@ -1,17 +0,0 @@ -jQuery(document).ready( - function () { - var hash = window.location.hash.replace(/^#/, ''); - - if (hash) { - jQuery('#main-frame').attr('src', hash); - - if (history.pushState) { - history.pushState( - '', - document.title, - window.location.pathname + window.location.search - ); - } - } - } -); diff --git a/docs/source/API/API/js/searchdoc.js b/docs/source/API/API/js/searchdoc.js deleted file mode 100644 index 08537ec..0000000 --- a/docs/source/API/API/js/searchdoc.js +++ /dev/null @@ -1,651 +0,0 @@ -/* -Copyright (c) 2009 Vladimir Kolesnikov - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -Searchdoc = {}; - -// navigation.js ------------------------------------------ - -Searchdoc.Navigation = new function() { - this.initNavigation = function() { - var _this = this; - - $(document).keydown(function(e) { - _this.onkeydown(e); - }).keyup(function(e) { - _this.onkeyup(e); - }); - - this.navigationActive = true; - } - - this.setNavigationActive = function(state) { - this.navigationActive = state; - this.clearMoveTimeout(); - } - - - this.onkeyup = function(e) { - if (!this.navigationActive) return; - switch(e.keyCode) { - case 37: //Event.KEY_LEFT: - case 38: //Event.KEY_UP: - case 39: //Event.KEY_RIGHT: - case 40: //Event.KEY_DOWN: - case 73: // i - qwerty - case 74: // j - case 75: // k - case 76: // l - case 67: // c - dvorak - case 72: // h - case 84: // t - case 78: // n - this.clearMoveTimeout(); - break; - } - } - - this.onkeydown = function(e) { - if (!this.navigationActive) return; - switch(e.keyCode) { - case 37: //Event.KEY_LEFT: - case 74: // j (qwerty) - case 72: // h (dvorak) - if (this.moveLeft()) e.preventDefault(); - break; - case 38: //Event.KEY_UP: - case 73: // i (qwerty) - case 67: // c (dvorak) - if (e.keyCode == 38 || e.ctrlKey) { - if (this.moveUp()) e.preventDefault(); - this.startMoveTimeout(false); - } - break; - case 39: //Event.KEY_RIGHT: - case 76: // l (qwerty) - case 78: // n (dvorak) - if (this.moveRight()) e.preventDefault(); - break; - case 40: //Event.KEY_DOWN: - case 75: // k (qwerty) - case 84: // t (dvorak) - if (e.keyCode == 40 || e.ctrlKey) { - if (this.moveDown()) e.preventDefault(); - this.startMoveTimeout(true); - } - break; - case 9: //Event.KEY_TAB: - case 13: //Event.KEY_RETURN: - if (this.$current) this.select(this.$current); - break; - } - if (e.ctrlKey && e.shiftKey) this.select(this.$current); - } - - this.clearMoveTimeout = function() { - clearTimeout(this.moveTimeout); - this.moveTimeout = null; - } - - this.startMoveTimeout = function(isDown) { - if (!$.browser.mozilla && !$.browser.opera) return; - if (this.moveTimeout) this.clearMoveTimeout(); - var _this = this; - - var go = function() { - if (!_this.moveTimeout) return; - _this[isDown ? 'moveDown' : 'moveUp'](); - _this.moveTimout = setTimeout(go, 100); - } - this.moveTimeout = setTimeout(go, 200); - } - - this.moveRight = function() { - } - - this.moveLeft = function() { - } - - this.move = function(isDown) { - } - - this.moveUp = function() { - return this.move(false); - } - - this.moveDown = function() { - return this.move(true); - } -} - - -// scrollIntoView.js -------------------------------------- - -function scrollIntoView(element, view) { - var offset, viewHeight, viewScroll, height; - offset = element.offsetTop; - height = element.offsetHeight; - viewHeight = view.offsetHeight; - viewScroll = view.scrollTop; - if (offset - viewScroll + height > viewHeight) { - view.scrollTop = offset - viewHeight + height; - } - if (offset < viewScroll) { - view.scrollTop = offset; - } -} - - -// searcher.js -------------------------------------------- - -Searchdoc.Searcher = function(data) { - this.data = data; - this.handlers = []; -} - -Searchdoc.Searcher.prototype = new function() { - var CHUNK_SIZE = 1000, // search is performed in chunks of 1000 for non-bloking user input - MAX_RESULTS = 100, // do not try to find more than 100 results - huid = 1, suid = 1, - runs = 0; - - - this.find = function(query) { - var queries = splitQuery(query), - regexps = buildRegexps(queries), - highlighters = buildHilighters(queries), - state = { from: 0, pass: 0, limit: MAX_RESULTS, n: suid++}, - _this = this; - this.currentSuid = state.n; - - if (!query) return; - - var run = function() { - // stop current search thread if new search started - if (state.n != _this.currentSuid) return; - - var results = performSearch(_this.data, regexps, queries, highlighters, state), - hasMore = (state.limit > 0 && state.pass < 3); - - triggerResults.call(_this, results, !hasMore); - if (hasMore) { - setTimeout(run, 2); - } - runs++; - }; - runs = 0; - - // start search thread - run(); - } - - /* ----- Events ------ */ - this.ready = function(fn) { - fn.huid = huid; - this.handlers.push(fn); - } - - /* ----- Utilities ------ */ - function splitQuery(query) { - return jQuery.grep(query.split(/(\s+|\(\)?)/), function(string) { return string.match(/\S/) }); - } - - function buildRegexps(queries) { - return jQuery.map(queries, function(query) { return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i') }); - } - - function buildHilighters(queries) { - return jQuery.map(queries, function(query) { - return jQuery.map( query.split(''), function(l, i){ return '\u0001$' + (i*2+1) + '\u0002$' + (i*2+2) } ).join('') - }); - } - - // function longMatchRegexp(index, longIndex, regexps) { - // for (var i = regexps.length - 1; i >= 0; i--){ - // if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false; - // }; - // return true; - // } - - - /* ----- Mathchers ------ */ - function matchPass1(index, longIndex, queries, regexps) { - if (index.indexOf(queries[0]) != 0) return false; - for (var i=1, l = regexps.length; i < l; i++) { - if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false; - }; - return true; - } - - function matchPass2(index, longIndex, queries, regexps) { - if (index.indexOf(queries[0]) == -1) return false; - for (var i=1, l = regexps.length; i < l; i++) { - if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false; - }; - return true; - } - - function matchPassRegexp(index, longIndex, queries, regexps) { - if (!index.match(regexps[0])) return false; - for (var i=1, l = regexps.length; i < l; i++) { - if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false; - }; - return true; - } - - - /* ----- Highlighters ------ */ - function highlightRegexp(info, queries, regexps, highlighters) { - var result = createResult(info); - for (var i=0, l = regexps.length; i < l; i++) { - result.title = result.title.replace(regexps[i], highlighters[i]); - if (i > 0) - result.namespace = result.namespace.replace(regexps[i], highlighters[i]); - }; - return result; - } - - function hltSubstring(string, pos, length) { - return string.substring(0, pos) + '\u0001' + string.substring(pos, pos + length) + '\u0002' + string.substring(pos + length); - } - - function highlightQuery(info, queries, regexps, highlighters) { - var result = createResult(info), pos = 0, lcTitle = result.title.toLowerCase(); - pos = lcTitle.indexOf(queries[0]); - if (pos != -1) { - result.title = hltSubstring(result.title, pos, queries[0].length); - } - for (var i=1, l = regexps.length; i < l; i++) { - result.title = result.title.replace(regexps[i], highlighters[i]); - result.namespace = result.namespace.replace(regexps[i], highlighters[i]); - }; - return result; - } - - function createResult(info) { - var result = {}; - result.title = info[0]; - result.namespace = info[1]; - result.path = info[2]; - result.params = info[3]; - result.snippet = info[4]; - result.badge = info[6]; - return result; - } - - /* ----- Searching ------ */ - function performSearch(data, regexps, queries, highlighters, state) { - var searchIndex = data.searchIndex, // search by title first and then by source - longSearchIndex = data.longSearchIndex, - info = data.info, - result = [], - i = state.from, - l = searchIndex.length, - togo = CHUNK_SIZE, - matchFunc, hltFunc; - - while (state.pass < 3 && state.limit > 0 && togo > 0) { - if (state.pass == 0) { - matchFunc = matchPass1; - hltFunc = highlightQuery; - } else if (state.pass == 1) { - matchFunc = matchPass2; - hltFunc = highlightQuery; - } else if (state.pass == 2) { - matchFunc = matchPassRegexp; - hltFunc = highlightRegexp; - } - - for (; togo > 0 && i < l && state.limit > 0; i++, togo--) { - if (info[i].n == state.n) continue; - if (matchFunc(searchIndex[i], longSearchIndex[i], queries, regexps)) { - info[i].n = state.n; - result.push(hltFunc(info[i], queries, regexps, highlighters)); - state.limit--; - } - }; - if (searchIndex.length <= i) { - state.pass++; - i = state.from = 0; - } else { - state.from = i; - } - } - return result; - } - - function triggerResults(results, isLast) { - jQuery.each(this.handlers, function(i, fn) { fn.call(this, results, isLast) }) - } -} - - - - -// panel.js ----------------------------------------------- - -Searchdoc.Panel = function(element, data, tree, frame) { - this.$element = $(element); - this.$input = $('input', element).eq(0); - this.$result = $('.result ul', element).eq(0); - this.frame = frame; - this.$current = null; - this.$view = this.$result.parent(); - this.data = data; - this.searcher = new Searchdoc.Searcher(data.index); - this.tree = new Searchdoc.Tree($('.tree', element), tree, this); - this.init(); -} - -Searchdoc.Panel.prototype = $.extend({}, Searchdoc.Navigation, new function() { - var suid = 1; - - this.init = function() { - var _this = this; - var observer = function() { - _this.search(_this.$input[0].value); - }; - this.$input.keyup(observer); - this.$input.click(observer); // mac's clear field - - this.searcher.ready(function(results, isLast) { - _this.addResults(results, isLast); - }) - - this.$result.click(function(e) { - _this.$current.removeClass('current'); - _this.$current = $(e.target).closest('li').addClass('current'); - _this.select(); - _this.$input.focus(); - }); - - this.initNavigation(); - this.setNavigationActive(false); - } - - this.search = function(value, selectFirstMatch) { - value = jQuery.trim(value).toLowerCase(); - this.selectFirstMatch = selectFirstMatch; - if (value) { - this.$element.removeClass('panel_tree').addClass('panel_results'); - this.tree.setNavigationActive(false); - this.setNavigationActive(true); - } else { - this.$element.addClass('panel_tree').removeClass('panel_results'); - this.tree.setNavigationActive(true); - this.setNavigationActive(false); - } - if (value != this.lastQuery) { - this.lastQuery = value; - this.firstRun = true; - this.searcher.find(value); - } - } - - this.addResults = function(results, isLast) { - var target = this.$result.get(0); - if (this.firstRun && (results.length > 0 || isLast)) { - this.$current = null; - this.$result.empty(); - } - for (var i=0, l = results.length; i < l; i++) { - target.appendChild(renderItem.call(this, results[i])); - }; - if (this.firstRun && results.length > 0) { - this.firstRun = false; - this.$current = $(target.firstChild); - this.$current.addClass('current'); - if (this.selectFirstMatch) this.select(); - scrollIntoView(this.$current[0], this.$view[0]) - } - if (jQuery.browser.msie) this.$element[0].className += ''; - } - - this.open = function(src) { - this.frame.location.href = src; - if (this.frame.highlight) this.frame.highlight(src); - } - - this.select = function() { - this.open(this.$current.data('path')); - } - - this.move = function(isDown) { - if (!this.$current) return; - var $next = this.$current[isDown ? 'next' : 'prev'](); - if ($next.length) { - this.$current.removeClass('current'); - $next.addClass('current'); - scrollIntoView($next[0], this.$view[0]); - this.$current = $next; - } - return true; - } - - function renderItem(result) { - var li = document.createElement('li'), - html = '', badge = result.badge; - html += '

' + hlt(result.title); - if (result.params) html += '' + result.params + ''; - html += '

'; - html += '

'; - if (typeof badge != 'undefined') { - html += '' + escapeHTML(this.data.badges[badge] || 'unknown') + ''; - } - html += hlt(result.namespace) + '

'; - if (result.snippet) html += '

' + escapeHTML(result.snippet) + '

'; - li.innerHTML = html; - jQuery.data(li, 'path', result.path); - return li; - } - - function hlt(html) { - return escapeHTML(html).replace(/\u0001/g, '').replace(/\u0002/g, '') - } - - function escapeHTML(html) { - return html.replace(/[&<>]/g, function(c) { - return '&#' + c.charCodeAt(0) + ';'; - }); - } - -}); - -// tree.js ------------------------------------------------ - -Searchdoc.Tree = function(element, tree, panel) { - this.$element = $(element); - this.$list = $('ul', element); - this.tree = tree; - this.panel = panel; - this.init(); -} - -Searchdoc.Tree.prototype = $.extend({}, Searchdoc.Navigation, new function() { - this.init = function() { - var stopper = document.createElement('li'); - stopper.className = 'stopper'; - this.$list[0].appendChild(stopper); - for (var i=0, l = this.tree.length; i < l; i++) { - buildAndAppendItem.call(this, this.tree[i], 0, stopper); - }; - var _this = this; - this.$list.click(function(e) { - var $target = $(e.target), - $li = $target.closest('li'); - if ($target.hasClass('icon')) { - _this.toggle($li); - } else { - _this.select($li); - } - }) - - this.initNavigation(); - if (jQuery.browser.msie) document.body.className += ''; - } - - this.select = function($li) { - this.highlight($li); - var path = $li[0].searchdoc_tree_data.path; - if (path) this.panel.open(path); - } - - this.highlight = function($li) { - if (this.$current) this.$current.removeClass('current'); - this.$current = $li.addClass('current'); - } - - this.toggle = function($li) { - var closed = !$li.hasClass('closed'), - children = $li[0].searchdoc_tree_data.children; - $li.toggleClass('closed'); - for (var i=0, l = children.length; i < l; i++) { - toggleVis.call(this, $(children[i].li), !closed); - }; - } - - this.moveRight = function() { - if (!this.$current) { - this.highlight(this.$list.find('li:first')); - return; - } - if (this.$current.hasClass('closed')) { - this.toggle(this.$current); - } - } - - this.moveLeft = function() { - if (!this.$current) { - this.highlight(this.$list.find('li:first')); - return; - } - if (!this.$current.hasClass('closed')) { - this.toggle(this.$current); - } else { - var level = this.$current[0].searchdoc_tree_data.level; - if (level == 0) return; - var $next = this.$current.prevAll('li.level_' + (level - 1) + ':visible:first'); - this.$current.removeClass('current'); - $next.addClass('current'); - scrollIntoView($next[0], this.$element[0]); - this.$current = $next; - } - } - - this.move = function(isDown) { - if (!this.$current) { - this.highlight(this.$list.find('li:first')); - return true; - } - var next = this.$current[0]; - if (isDown) { - do { - next = next.nextSibling; - if (next && next.style && next.style.display != 'none') break; - } while(next); - } else { - do { - next = next.previousSibling; - if (next && next.style && next.style.display != 'none') break; - } while(next); - } - if (next && next.className.indexOf('stopper') == -1) { - this.$current.removeClass('current'); - $(next).addClass('current'); - scrollIntoView(next, this.$element[0]); - this.$current = $(next); - } - return true; - } - - function toggleVis($li, show) { - var closed = $li.hasClass('closed'), - children = $li[0].searchdoc_tree_data.children; - $li.css('display', show ? '' : 'none') - if (!show && this.$current && $li[0] == this.$current[0]) { - this.$current.removeClass('current'); - this.$current = null; - } - for (var i=0, l = children.length; i < l; i++) { - toggleVis.call(this, $(children[i].li), show && !closed); - }; - } - - function buildAndAppendItem(item, level, before) { - var li = renderItem(item, level), - list = this.$list[0]; - item.li = li; - list.insertBefore(li, before); - for (var i=0, l = item[3].length; i < l; i++) { - buildAndAppendItem.call(this, item[3][i], level + 1, before); - }; - return li; - } - - function renderItem(item, level) { - var li = document.createElement('li'), - cnt = document.createElement('div'), - h1 = document.createElement('h1'), - p = document.createElement('p'), - icon, i; - - li.appendChild(cnt); - li.style.paddingLeft = getOffset(level); - cnt.className = 'content'; - if (!item[1]) li.className = 'empty '; - cnt.appendChild(h1); - // cnt.appendChild(p); - h1.appendChild(document.createTextNode(item[0])); - // p.appendChild(document.createTextNode(item[4])); - if (item[2]) { - i = document.createElement('i'); - i.appendChild(document.createTextNode(item[2])); - h1.appendChild(i); - } - if (item[3].length > 0) { - icon = document.createElement('div'); - icon.className = 'icon'; - cnt.appendChild(icon); - } - - // user direct assignement instead of $() - // it's 8x faster - // $(li).data('path', item[1]) - // .data('children', item[3]) - // .data('level', level) - // .css('display', level == 0 ? '' : 'none') - // .addClass('level_' + level) - // .addClass('closed'); - li.searchdoc_tree_data = { - path: item[1], - children: item[3], - level: level - } - li.style.display = level == 0 ? '' : 'none'; - li.className += 'level_' + level + ' closed'; - return li; - } - - function getOffset(level) { - return 5 + 18*level + 'px'; - } -}); diff --git a/docs/source/API/API/namespaces-frame.html b/docs/source/API/API/namespaces-frame.html deleted file mode 100644 index 0bbb27b..0000000 --- a/docs/source/API/API/namespaces-frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - Namespaces | PHP-FFMpeg API - - - diff --git a/docs/source/API/API/namespaces.html b/docs/source/API/API/namespaces.html deleted file mode 100644 index cae771a..0000000 --- a/docs/source/API/API/namespaces.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - Namespaces | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -

Namespaces

-
- - - - diff --git a/docs/source/API/API/opensearch.xml b/docs/source/API/API/opensearch.xml deleted file mode 100644 index e69de29..0000000 diff --git a/docs/source/API/API/panel.html b/docs/source/API/API/panel.html deleted file mode 100644 index e4dccfe..0000000 --- a/docs/source/API/API/panel.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - PHP-FFMpeg API - - - - - - - - -
-
- loading... -
-
- -
-
-
    -
-
-
-
    -
-
-
- - diff --git a/docs/source/API/API/renderer.index b/docs/source/API/API/renderer.index deleted file mode 100644 index 3d366fd..0000000 --- a/docs/source/API/API/renderer.index +++ /dev/null @@ -1 +0,0 @@ -C:19:"Sami\Renderer\Index":6516:{a:3:{i:0;a:69:{s:29:"FFMpeg\Coordinate\AspectRatio";s:40:"57da17e0a2eff2064bdf11846081968f148d0946";s:27:"FFMpeg\Coordinate\Dimension";s:40:"8bf62fd6d7c3c6c7af0d1e8ff61926f2d331bbda";s:27:"FFMpeg\Coordinate\FrameRate";s:40:"5d68fcd12e9a7669e1cfad903bf2f247b10de21d";s:23:"FFMpeg\Coordinate\Point";s:40:"c3d3332bce0338e54fa1cd9a5c7ea7e5512a454a";s:26:"FFMpeg\Coordinate\TimeCode";s:40:"3ed681781434f88d6890cd811e01c169fe303f04";s:26:"FFMpeg\Driver\FFMpegDriver";s:40:"fb805d21f4503c064945d813c9cec8fdc195ed3d";s:27:"FFMpeg\Driver\FFProbeDriver";s:40:"2cb35865c2fef7588cb53f609dabbd1ba64c54c3";s:35:"FFMpeg\Exception\ExceptionInterface";s:40:"a8ea4b6beb62ed782ec33f97df5d81e49c319207";s:44:"FFMpeg\Exception\ExecutableNotFoundException";s:40:"b94d9119109abd3a4d347fb44338e3fc12da1eeb";s:41:"FFMpeg\Exception\InvalidArgumentException";s:40:"7b3c37264e64ad4525408f0b1ddc998950963cbc";s:31:"FFMpeg\Exception\LogicException";s:40:"4e8d24c7ac8465366b62958c30a45d1f677587cb";s:33:"FFMpeg\Exception\RuntimeException";s:40:"94b034160f13f78b3f21e147aedd8f95576f3166";s:13:"FFMpeg\FFMpeg";s:40:"0d1b826fb2a44c049740679334e7b6a5b59ae68b";s:28:"FFMpeg\FFMpegServiceProvider";s:40:"688399dfaae0872e021b655c8c15b26f66e7172d";s:14:"FFMpeg\FFProbe";s:40:"4ee7e67efd6ac5551047209bbaa2f511b4f545f5";s:39:"FFMpeg\FFProbe\DataMapping\AbstractData";s:40:"a7ea09c61353e46d07e4a6232644146e3288fb47";s:33:"FFMpeg\FFProbe\DataMapping\Format";s:40:"b49dfcfc07ef236aa6098cfeb85b1abd261c3cc2";s:33:"FFMpeg\FFProbe\DataMapping\Stream";s:40:"58188ef802a3f8736c6f86d2320016eef0415a3c";s:43:"FFMpeg\FFProbe\DataMapping\StreamCollection";s:40:"958bc86b078a708f31e6f829b177ce6fe7666052";s:21:"FFMpeg\FFProbe\Mapper";s:40:"abd650c1aaf38c3f8aa3be1ecc807fa59caa66ae";s:30:"FFMpeg\FFProbe\MapperInterface";s:40:"5a1482bed58b3922fcd4350e94c2233e7f242481";s:28:"FFMpeg\FFProbe\OptionsTester";s:40:"459fe1fa6c1ce5458e83a5d62b3f138a570c59ec";s:37:"FFMpeg\FFProbe\OptionsTesterInterface";s:40:"b582a1b5880368fc0bf1ea50e7fd73bd10855713";s:27:"FFMpeg\FFProbe\OutputParser";s:40:"19484b4e8def426ff8385e72cb2c358eeaf2f432";s:36:"FFMpeg\FFProbe\OutputParserInterface";s:40:"9d94ec72720761e297186815aea711860b85c790";s:41:"FFMpeg\Filters\Audio\AudioFilterInterface";s:40:"8fdf02d335fc63636f0fd9c97030618c59af010f";s:33:"FFMpeg\Filters\Audio\AudioFilters";s:40:"b07e52bbe4014a245eeaaf57bb2d24b8717d414d";s:43:"FFMpeg\Filters\Audio\AudioResamplableFilter";s:40:"a9b6f5143248acc9e76f65a86a01f463fa8ad9e2";s:33:"FFMpeg\Filters\Audio\SimpleFilter";s:40:"c78f9a3cf1e0b57d4ddf5cd7326cbb18f92ba56f";s:30:"FFMpeg\Filters\FilterInterface";s:40:"cfe4ed42a9a5eed222c2dea0568918b91d9b27c9";s:32:"FFMpeg\Filters\FiltersCollection";s:40:"0b10c4cd6344f8b24cfff6fddc8fdf0339a69412";s:44:"FFMpeg\Filters\Frame\DisplayRatioFixerFilter";s:40:"74767da6b7007dcc49c29c8e2b6f2e9975096a78";s:41:"FFMpeg\Filters\Frame\FrameFilterInterface";s:40:"ca1664998ca7a964f3bde800cf11a1d404ef27c6";s:33:"FFMpeg\Filters\Frame\FrameFilters";s:40:"f431f8b86388255862fb964f901b1cbac3e1d240";s:31:"FFMpeg\Filters\Video\ClipFilter";s:40:"16d3429964854e6fedad94b34c704f57d704ac62";s:33:"FFMpeg\Filters\Video\CustomFilter";s:40:"276f66be3f641aa028af792becc0be8721cea0a7";s:36:"FFMpeg\Filters\Video\FrameRateFilter";s:40:"282f7baefa142ce9c88ab84be8c5c8547a1fa125";s:33:"FFMpeg\Filters\Video\ResizeFilter";s:40:"65ce5e2a7474371cfa357914cdc253ba486d7d6b";s:33:"FFMpeg\Filters\Video\RotateFilter";s:40:"1520734eaf74545b35a358d764672521ff71e090";s:38:"FFMpeg\Filters\Video\SynchronizeFilter";s:40:"e614f7a1594f0d11a715ca046bd9e00099019381";s:41:"FFMpeg\Filters\Video\VideoFilterInterface";s:40:"780680d9a2e5080dac81ea8dca8575afbb1c0618";s:33:"FFMpeg\Filters\Video\VideoFilters";s:40:"bc6a884e5f741e6b7de73bb82e3c870a314f3f59";s:36:"FFMpeg\Filters\Video\WatermarkFilter";s:40:"5110a94b410e200c40ffb22e21f05a452cac1e0b";s:28:"FFMpeg\Format\AudioInterface";s:40:"d3880d55d6d575b2fb5ef18ddc7379b6d00f7d0b";s:23:"FFMpeg\Format\Audio\Aac";s:40:"11485603d1dd6333b4df9ef2a0e85c98c409d053";s:32:"FFMpeg\Format\Audio\DefaultAudio";s:40:"76509330e2f3d73909f786e2e5186f278b186827";s:24:"FFMpeg\Format\Audio\Flac";s:40:"28a6737f6890dc37ac7bd1e73745e9422aec2334";s:23:"FFMpeg\Format\Audio\Mp3";s:40:"1e0a9f51556efa0aabaaa659c5ee562e555509d2";s:26:"FFMpeg\Format\Audio\Vorbis";s:40:"374aa243933f925995c6db639583307ad89e55fa";s:23:"FFMpeg\Format\Audio\Wav";s:40:"cf5829652a2d6c1ecbbbc10169b1a9157ca7fa16";s:29:"FFMpeg\Format\FormatInterface";s:40:"89b9c804aa0c6a59cc1b5d32af91ba9e87f9f1db";s:28:"FFMpeg\Format\FrameInterface";s:40:"c846f893352d6d7e8334e3ac340b45300b8cebeb";s:55:"FFMpeg\Format\ProgressListener\AbstractProgressListener";s:40:"23d34d5e62384bac5ec5d8795663b1515b2d7d2a";s:52:"FFMpeg\Format\ProgressListener\AudioProgressListener";s:40:"fecd89f82565742d50124b73f6a314bdde660ce7";s:52:"FFMpeg\Format\ProgressListener\VideoProgressListener";s:40:"3dac687cec1e8c003ff7e5ad1f36868a0548b7ae";s:35:"FFMpeg\Format\ProgressableInterface";s:40:"2df70012a6fbc122cbcc60739b71b39da87f3e18";s:28:"FFMpeg\Format\VideoInterface";s:40:"3de87e72a970c97f7c1e3cd374b9b5e5c18ad9bd";s:32:"FFMpeg\Format\Video\DefaultVideo";s:40:"c214aadcb492bfd5cf352ab3a871e4ee282d29fb";s:23:"FFMpeg\Format\Video\Ogg";s:40:"cd38d313465b819d2c6247ef59993f8b8b01b2d9";s:23:"FFMpeg\Format\Video\WMV";s:40:"75192a3c3a8a9cfde8e56e2c930fa9baa7f14b5c";s:24:"FFMpeg\Format\Video\WMV3";s:40:"5b32ee16bf425cdf30e36c777176146e16feef22";s:24:"FFMpeg\Format\Video\WebM";s:40:"2938d3b5e3609bd9b279f93f44ed347d98628904";s:24:"FFMpeg\Format\Video\X264";s:40:"81a66aa4dea09cff05b714250e6425e11622a22c";s:30:"FFMpeg\Media\AbstractMediaType";s:40:"af2e82a19462716cfc7fd7ca340cc8c8f59a3670";s:36:"FFMpeg\Media\AbstractStreamableMedia";s:40:"feac899e370fe2a8d4d5a0b76facbd8154d0bbf1";s:18:"FFMpeg\Media\Audio";s:40:"4eda826dbcc6bc6a45ac39f48ac7340af58fa3f6";s:18:"FFMpeg\Media\Frame";s:40:"827898202f4a4ba13dfbfb937787b561935066b0";s:31:"FFMpeg\Media\MediaTypeInterface";s:40:"175f798e490746d9283bda93cf4f935adb94e929";s:18:"FFMpeg\Media\Video";s:40:"1898a3a561670cc2f3f2106d635a8509d12ed232";}i:1;a:1:{i:0;s:6:"master";}i:2;a:15:{i:0;s:6:"FFMpeg";i:1;s:17:"FFMpeg\Coordinate";i:2;s:13:"FFMpeg\Driver";i:3;s:16:"FFMpeg\Exception";i:4;s:14:"FFMpeg\FFProbe";i:5;s:26:"FFMpeg\FFProbe\DataMapping";i:6;s:14:"FFMpeg\Filters";i:7;s:20:"FFMpeg\Filters\Audio";i:8;s:20:"FFMpeg\Filters\Frame";i:9;s:20:"FFMpeg\Filters\Video";i:10;s:13:"FFMpeg\Format";i:11;s:19:"FFMpeg\Format\Audio";i:12;s:30:"FFMpeg\Format\ProgressListener";i:13;s:19:"FFMpeg\Format\Video";i:14;s:12:"FFMpeg\Media";}}} \ No newline at end of file diff --git a/docs/source/API/API/search_index.js b/docs/source/API/API/search_index.js deleted file mode 100644 index b361a96..0000000 --- a/docs/source/API/API/search_index.js +++ /dev/null @@ -1,7 +0,0 @@ -var search_data = { - 'index': { - 'searchIndex': ["ffmpeg","ffmpeg\\coordinate","ffmpeg\\driver","ffmpeg\\exception","ffmpeg\\ffprobe","ffmpeg\\ffprobe\\datamapping","ffmpeg\\filters","ffmpeg\\filters\\audio","ffmpeg\\filters\\frame","ffmpeg\\filters\\video","ffmpeg\\format","ffmpeg\\format\\audio","ffmpeg\\format\\progresslistener","ffmpeg\\format\\video","ffmpeg\\media","ffmpeg\\coordinate\\aspectratio","ffmpeg\\coordinate\\dimension","ffmpeg\\coordinate\\framerate","ffmpeg\\coordinate\\point","ffmpeg\\coordinate\\timecode","ffmpeg\\driver\\ffmpegdriver","ffmpeg\\driver\\ffprobedriver","ffmpeg\\exception\\exceptioninterface","ffmpeg\\exception\\executablenotfoundexception","ffmpeg\\exception\\invalidargumentexception","ffmpeg\\exception\\logicexception","ffmpeg\\exception\\runtimeexception","ffmpeg\\ffmpeg","ffmpeg\\ffmpegserviceprovider","ffmpeg\\ffprobe","ffmpeg\\ffprobe\\datamapping\\abstractdata","ffmpeg\\ffprobe\\datamapping\\format","ffmpeg\\ffprobe\\datamapping\\stream","ffmpeg\\ffprobe\\datamapping\\streamcollection","ffmpeg\\ffprobe\\mapper","ffmpeg\\ffprobe\\mapperinterface","ffmpeg\\ffprobe\\optionstester","ffmpeg\\ffprobe\\optionstesterinterface","ffmpeg\\ffprobe\\outputparser","ffmpeg\\ffprobe\\outputparserinterface","ffmpeg\\filters\\audio\\audiofilterinterface","ffmpeg\\filters\\audio\\audiofilters","ffmpeg\\filters\\audio\\audioresamplablefilter","ffmpeg\\filters\\audio\\simplefilter","ffmpeg\\filters\\filterinterface","ffmpeg\\filters\\filterscollection","ffmpeg\\filters\\frame\\displayratiofixerfilter","ffmpeg\\filters\\frame\\framefilterinterface","ffmpeg\\filters\\frame\\framefilters","ffmpeg\\filters\\video\\clipfilter","ffmpeg\\filters\\video\\customfilter","ffmpeg\\filters\\video\\frameratefilter","ffmpeg\\filters\\video\\resizefilter","ffmpeg\\filters\\video\\rotatefilter","ffmpeg\\filters\\video\\synchronizefilter","ffmpeg\\filters\\video\\videofilterinterface","ffmpeg\\filters\\video\\videofilters","ffmpeg\\filters\\video\\watermarkfilter","ffmpeg\\format\\audiointerface","ffmpeg\\format\\audio\\aac","ffmpeg\\format\\audio\\defaultaudio","ffmpeg\\format\\audio\\flac","ffmpeg\\format\\audio\\mp3","ffmpeg\\format\\audio\\vorbis","ffmpeg\\format\\audio\\wav","ffmpeg\\format\\formatinterface","ffmpeg\\format\\frameinterface","ffmpeg\\format\\progresslistener\\abstractprogresslistener","ffmpeg\\format\\progresslistener\\audioprogresslistener","ffmpeg\\format\\progresslistener\\videoprogresslistener","ffmpeg\\format\\progressableinterface","ffmpeg\\format\\videointerface","ffmpeg\\format\\video\\defaultvideo","ffmpeg\\format\\video\\ogg","ffmpeg\\format\\video\\wmv","ffmpeg\\format\\video\\wmv3","ffmpeg\\format\\video\\webm","ffmpeg\\format\\video\\x264","ffmpeg\\media\\abstractmediatype","ffmpeg\\media\\abstractstreamablemedia","ffmpeg\\media\\audio","ffmpeg\\media\\frame","ffmpeg\\media\\mediatypeinterface","ffmpeg\\media\\video","ffmpeg\\coordinate\\aspectratio::__construct","ffmpeg\\coordinate\\aspectratio::getvalue","ffmpeg\\coordinate\\aspectratio::calculatewidth","ffmpeg\\coordinate\\aspectratio::calculateheight","ffmpeg\\coordinate\\aspectratio::create","ffmpeg\\coordinate\\dimension::__construct","ffmpeg\\coordinate\\dimension::getwidth","ffmpeg\\coordinate\\dimension::getheight","ffmpeg\\coordinate\\dimension::getratio","ffmpeg\\coordinate\\framerate::__construct","ffmpeg\\coordinate\\framerate::getvalue","ffmpeg\\coordinate\\point::__construct","ffmpeg\\coordinate\\point::getx","ffmpeg\\coordinate\\point::gety","ffmpeg\\coordinate\\timecode::__construct","ffmpeg\\coordinate\\timecode::__tostring","ffmpeg\\coordinate\\timecode::fromstring","ffmpeg\\coordinate\\timecode::fromseconds","ffmpeg\\driver\\ffmpegdriver::getname","ffmpeg\\driver\\ffmpegdriver::create","ffmpeg\\driver\\ffprobedriver::getname","ffmpeg\\driver\\ffprobedriver::create","ffmpeg\\ffmpeg::__construct","ffmpeg\\ffmpeg::setffprobe","ffmpeg\\ffmpeg::getffprobe","ffmpeg\\ffmpeg::setffmpegdriver","ffmpeg\\ffmpeg::getffmpegdriver","ffmpeg\\ffmpeg::open","ffmpeg\\ffmpeg::create","ffmpeg\\ffmpegserviceprovider::register","ffmpeg\\ffmpegserviceprovider::boot","ffmpeg\\ffprobe::__construct","ffmpeg\\ffprobe::getparser","ffmpeg\\ffprobe::setparser","ffmpeg\\ffprobe::getffprobedriver","ffmpeg\\ffprobe::setffprobedriver","ffmpeg\\ffprobe::setoptionstester","ffmpeg\\ffprobe::getoptionstester","ffmpeg\\ffprobe::setcache","ffmpeg\\ffprobe::getcache","ffmpeg\\ffprobe::getmapper","ffmpeg\\ffprobe::setmapper","ffmpeg\\ffprobe::format","ffmpeg\\ffprobe::streams","ffmpeg\\ffprobe::create","ffmpeg\\ffprobe\\datamapping\\abstractdata::__construct","ffmpeg\\ffprobe\\datamapping\\abstractdata::has","ffmpeg\\ffprobe\\datamapping\\abstractdata::get","ffmpeg\\ffprobe\\datamapping\\abstractdata::set","ffmpeg\\ffprobe\\datamapping\\abstractdata::keys","ffmpeg\\ffprobe\\datamapping\\abstractdata::all","ffmpeg\\ffprobe\\datamapping\\abstractdata::count","ffmpeg\\ffprobe\\datamapping\\stream::isaudio","ffmpeg\\ffprobe\\datamapping\\stream::isvideo","ffmpeg\\ffprobe\\datamapping\\stream::getdimensions","ffmpeg\\ffprobe\\datamapping\\streamcollection::__construct","ffmpeg\\ffprobe\\datamapping\\streamcollection::first","ffmpeg\\ffprobe\\datamapping\\streamcollection::add","ffmpeg\\ffprobe\\datamapping\\streamcollection::videos","ffmpeg\\ffprobe\\datamapping\\streamcollection::audios","ffmpeg\\ffprobe\\datamapping\\streamcollection::count","ffmpeg\\ffprobe\\datamapping\\streamcollection::all","ffmpeg\\ffprobe\\datamapping\\streamcollection::getiterator","ffmpeg\\ffprobe\\mapper::map","ffmpeg\\ffprobe\\mapperinterface::map","ffmpeg\\ffprobe\\optionstester::__construct","ffmpeg\\ffprobe\\optionstester::has","ffmpeg\\ffprobe\\optionstesterinterface::has","ffmpeg\\ffprobe\\outputparser::parse","ffmpeg\\ffprobe\\outputparserinterface::parse","ffmpeg\\filters\\audio\\audiofilterinterface::apply","ffmpeg\\filters\\audio\\audiofilters::__construct","ffmpeg\\filters\\audio\\audiofilters::resample","ffmpeg\\filters\\audio\\audioresamplablefilter::__construct","ffmpeg\\filters\\audio\\audioresamplablefilter::getpriority","ffmpeg\\filters\\audio\\audioresamplablefilter::getrate","ffmpeg\\filters\\audio\\audioresamplablefilter::apply","ffmpeg\\filters\\audio\\simplefilter::__construct","ffmpeg\\filters\\audio\\simplefilter::getpriority","ffmpeg\\filters\\audio\\simplefilter::apply","ffmpeg\\filters\\filterinterface::getpriority","ffmpeg\\filters\\filterscollection::add","ffmpeg\\filters\\filterscollection::count","ffmpeg\\filters\\filterscollection::getiterator","ffmpeg\\filters\\frame\\displayratiofixerfilter::__construct","ffmpeg\\filters\\frame\\displayratiofixerfilter::getpriority","ffmpeg\\filters\\frame\\displayratiofixerfilter::apply","ffmpeg\\filters\\frame\\framefilterinterface::apply","ffmpeg\\filters\\frame\\framefilters::__construct","ffmpeg\\filters\\frame\\framefilters::fixdisplayratio","ffmpeg\\filters\\video\\clipfilter::__construct","ffmpeg\\filters\\video\\clipfilter::getpriority","ffmpeg\\filters\\video\\clipfilter::getstart","ffmpeg\\filters\\video\\clipfilter::getduration","ffmpeg\\filters\\video\\clipfilter::apply","ffmpeg\\filters\\video\\customfilter::__construct","ffmpeg\\filters\\video\\customfilter::getpriority","ffmpeg\\filters\\video\\customfilter::apply","ffmpeg\\filters\\video\\frameratefilter::__construct","ffmpeg\\filters\\video\\frameratefilter::getpriority","ffmpeg\\filters\\video\\frameratefilter::getframerate","ffmpeg\\filters\\video\\frameratefilter::getgop","ffmpeg\\filters\\video\\frameratefilter::apply","ffmpeg\\filters\\video\\resizefilter::__construct","ffmpeg\\filters\\video\\resizefilter::getpriority","ffmpeg\\filters\\video\\resizefilter::getdimension","ffmpeg\\filters\\video\\resizefilter::getmode","ffmpeg\\filters\\video\\resizefilter::arestandardsforced","ffmpeg\\filters\\video\\resizefilter::apply","ffmpeg\\filters\\video\\rotatefilter::__construct","ffmpeg\\filters\\video\\rotatefilter::getpriority","ffmpeg\\filters\\video\\rotatefilter::getangle","ffmpeg\\filters\\video\\rotatefilter::apply","ffmpeg\\filters\\video\\synchronizefilter::__construct","ffmpeg\\filters\\video\\synchronizefilter::getpriority","ffmpeg\\filters\\video\\synchronizefilter::apply","ffmpeg\\filters\\video\\videofilterinterface::apply","ffmpeg\\filters\\video\\videofilters::__construct","ffmpeg\\filters\\video\\videofilters::resize","ffmpeg\\filters\\video\\videofilters::framerate","ffmpeg\\filters\\video\\videofilters::synchronize","ffmpeg\\filters\\video\\videofilters::clip","ffmpeg\\filters\\video\\videofilters::audioresample","ffmpeg\\filters\\video\\videofilters::rotate","ffmpeg\\filters\\video\\videofilters::watermark","ffmpeg\\filters\\video\\watermarkfilter::__construct","ffmpeg\\filters\\video\\watermarkfilter::getpriority","ffmpeg\\filters\\video\\watermarkfilter::apply","ffmpeg\\format\\audiointerface::getaudiokilobitrate","ffmpeg\\format\\audiointerface::getaudiochannels","ffmpeg\\format\\audiointerface::getaudiocodec","ffmpeg\\format\\audiointerface::getavailableaudiocodecs","ffmpeg\\format\\audio\\aac::__construct","ffmpeg\\format\\audio\\aac::getavailableaudiocodecs","ffmpeg\\format\\audio\\defaultaudio::getextraparams","ffmpeg\\format\\audio\\defaultaudio::getaudiocodec","ffmpeg\\format\\audio\\defaultaudio::setaudiocodec","ffmpeg\\format\\audio\\defaultaudio::getaudiokilobitrate","ffmpeg\\format\\audio\\defaultaudio::setaudiokilobitrate","ffmpeg\\format\\audio\\defaultaudio::getaudiochannels","ffmpeg\\format\\audio\\defaultaudio::setaudiochannels","ffmpeg\\format\\audio\\defaultaudio::createprogresslistener","ffmpeg\\format\\audio\\defaultaudio::getpasses","ffmpeg\\format\\audio\\flac::__construct","ffmpeg\\format\\audio\\flac::getavailableaudiocodecs","ffmpeg\\format\\audio\\mp3::__construct","ffmpeg\\format\\audio\\mp3::getavailableaudiocodecs","ffmpeg\\format\\audio\\vorbis::__construct","ffmpeg\\format\\audio\\vorbis::getextraparams","ffmpeg\\format\\audio\\vorbis::getavailableaudiocodecs","ffmpeg\\format\\audio\\wav::__construct","ffmpeg\\format\\audio\\wav::getavailableaudiocodecs","ffmpeg\\format\\formatinterface::getpasses","ffmpeg\\format\\formatinterface::getextraparams","ffmpeg\\format\\progresslistener\\abstractprogresslistener::__construct","ffmpeg\\format\\progresslistener\\abstractprogresslistener::getffprobe","ffmpeg\\format\\progresslistener\\abstractprogresslistener::getpathfile","ffmpeg\\format\\progresslistener\\abstractprogresslistener::getcurrentpass","ffmpeg\\format\\progresslistener\\abstractprogresslistener::gettotalpass","ffmpeg\\format\\progresslistener\\abstractprogresslistener::handle","ffmpeg\\format\\progresslistener\\abstractprogresslistener::forwardedevents","ffmpeg\\format\\progresslistener\\audioprogresslistener::getpattern","ffmpeg\\format\\progresslistener\\videoprogresslistener::getpattern","ffmpeg\\format\\progressableinterface::createprogresslistener","ffmpeg\\format\\videointerface::getkilobitrate","ffmpeg\\format\\videointerface::getmodulus","ffmpeg\\format\\videointerface::getvideocodec","ffmpeg\\format\\videointerface::supportbframes","ffmpeg\\format\\videointerface::getavailablevideocodecs","ffmpeg\\format\\video\\defaultvideo::getkilobitrate","ffmpeg\\format\\video\\defaultvideo::setkilobitrate","ffmpeg\\format\\video\\defaultvideo::getvideocodec","ffmpeg\\format\\video\\defaultvideo::setvideocodec","ffmpeg\\format\\video\\defaultvideo::getmodulus","ffmpeg\\format\\video\\defaultvideo::createprogresslistener","ffmpeg\\format\\video\\ogg::__construct","ffmpeg\\format\\video\\ogg::supportbframes","ffmpeg\\format\\video\\ogg::getavailableaudiocodecs","ffmpeg\\format\\video\\ogg::getavailablevideocodecs","ffmpeg\\format\\video\\wmv::__construct","ffmpeg\\format\\video\\wmv::supportbframes","ffmpeg\\format\\video\\wmv::getavailableaudiocodecs","ffmpeg\\format\\video\\wmv::getavailablevideocodecs","ffmpeg\\format\\video\\wmv3::__construct","ffmpeg\\format\\video\\wmv3::supportbframes","ffmpeg\\format\\video\\wmv3::getavailableaudiocodecs","ffmpeg\\format\\video\\wmv3::getavailablevideocodecs","ffmpeg\\format\\video\\webm::__construct","ffmpeg\\format\\video\\webm::supportbframes","ffmpeg\\format\\video\\webm::getextraparams","ffmpeg\\format\\video\\webm::getavailableaudiocodecs","ffmpeg\\format\\video\\webm::getavailablevideocodecs","ffmpeg\\format\\video\\x264::__construct","ffmpeg\\format\\video\\x264::supportbframes","ffmpeg\\format\\video\\x264::setbframessupport","ffmpeg\\format\\video\\x264::getavailableaudiocodecs","ffmpeg\\format\\video\\x264::getavailablevideocodecs","ffmpeg\\format\\video\\x264::getpasses","ffmpeg\\format\\video\\x264::getmodulus","ffmpeg\\media\\abstractmediatype::__construct","ffmpeg\\media\\abstractmediatype::getffmpegdriver","ffmpeg\\media\\abstractmediatype::setffmpegdriver","ffmpeg\\media\\abstractmediatype::getffprobe","ffmpeg\\media\\abstractmediatype::setffprobe","ffmpeg\\media\\abstractmediatype::getpathfile","ffmpeg\\media\\abstractmediatype::setfilterscollection","ffmpeg\\media\\abstractmediatype::getfilterscollection","ffmpeg\\media\\abstractstreamablemedia::getstreams","ffmpeg\\media\\abstractstreamablemedia::getformat","ffmpeg\\media\\audio::filters","ffmpeg\\media\\audio::addfilter","ffmpeg\\media\\audio::save","ffmpeg\\media\\frame::__construct","ffmpeg\\media\\frame::getvideo","ffmpeg\\media\\frame::filters","ffmpeg\\media\\frame::addfilter","ffmpeg\\media\\frame::gettimecode","ffmpeg\\media\\frame::save","ffmpeg\\media\\mediatypeinterface::filters","ffmpeg\\media\\mediatypeinterface::getpathfile","ffmpeg\\media\\video::filters","ffmpeg\\media\\video::addfilter","ffmpeg\\media\\video::save","ffmpeg\\media\\video::frame"], - 'info': [["FFMpeg","","FFMpeg.html","","",3],["FFMpeg\\Coordinate","","FFMpeg\/Coordinate.html","","",3],["FFMpeg\\Driver","","FFMpeg\/Driver.html","","",3],["FFMpeg\\Exception","","FFMpeg\/Exception.html","","",3],["FFMpeg\\FFProbe","","FFMpeg\/FFProbe.html","","",3],["FFMpeg\\FFProbe\\DataMapping","","FFMpeg\/FFProbe\/DataMapping.html","","",3],["FFMpeg\\Filters","","FFMpeg\/Filters.html","","",3],["FFMpeg\\Filters\\Audio","","FFMpeg\/Filters\/Audio.html","","",3],["FFMpeg\\Filters\\Frame","","FFMpeg\/Filters\/Frame.html","","",3],["FFMpeg\\Filters\\Video","","FFMpeg\/Filters\/Video.html","","",3],["FFMpeg\\Format","","FFMpeg\/Format.html","","",3],["FFMpeg\\Format\\Audio","","FFMpeg\/Format\/Audio.html","","",3],["FFMpeg\\Format\\ProgressListener","","FFMpeg\/Format\/ProgressListener.html","","",3],["FFMpeg\\Format\\Video","","FFMpeg\/Format\/Video.html","","",3],["FFMpeg\\Media","","FFMpeg\/Media.html","","",3],["AspectRatio","FFMpeg\\Coordinate","FFMpeg\/Coordinate\/AspectRatio.html","","",1],["Dimension","FFMpeg\\Coordinate","FFMpeg\/Coordinate\/Dimension.html","","Dimension object, used for manipulating width and height",1],["FrameRate","FFMpeg\\Coordinate","FFMpeg\/Coordinate\/FrameRate.html","","",1],["Point","FFMpeg\\Coordinate","FFMpeg\/Coordinate\/Point.html","","",1],["TimeCode","FFMpeg\\Coordinate","FFMpeg\/Coordinate\/TimeCode.html","","",1],["FFMpegDriver","FFMpeg\\Driver","FFMpeg\/Driver\/FFMpegDriver.html"," < AbstractBinary","",1],["FFProbeDriver","FFMpeg\\Driver","FFMpeg\/Driver\/FFProbeDriver.html"," < AbstractBinary","",1],["ExceptionInterface","FFMpeg\\Exception","FFMpeg\/Exception\/ExceptionInterface.html","","",1],["ExecutableNotFoundException","FFMpeg\\Exception","FFMpeg\/Exception\/ExecutableNotFoundException.html"," < RuntimeException","",1],["InvalidArgumentException","FFMpeg\\Exception","FFMpeg\/Exception\/InvalidArgumentException.html"," < InvalidArgumentException","",1],["LogicException","FFMpeg\\Exception","FFMpeg\/Exception\/LogicException.html"," < LogicException","",1],["RuntimeException","FFMpeg\\Exception","FFMpeg\/Exception\/RuntimeException.html"," < RuntimeException","",1],["FFMpeg","FFMpeg","FFMpeg\/FFMpeg.html","","",1],["FFMpegServiceProvider","FFMpeg","FFMpeg\/FFMpegServiceProvider.html","","",1],["FFProbe","FFMpeg","FFMpeg\/FFProbe.html","","",1],["AbstractData","FFMpeg\\FFProbe\\DataMapping","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html","","",1],["Format","FFMpeg\\FFProbe\\DataMapping","FFMpeg\/FFProbe\/DataMapping\/Format.html"," < AbstractData","",1],["Stream","FFMpeg\\FFProbe\\DataMapping","FFMpeg\/FFProbe\/DataMapping\/Stream.html"," < AbstractData","",1],["StreamCollection","FFMpeg\\FFProbe\\DataMapping","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html","","",1],["Mapper","FFMpeg\\FFProbe","FFMpeg\/FFProbe\/Mapper.html","","",1],["MapperInterface","FFMpeg\\FFProbe","FFMpeg\/FFProbe\/MapperInterface.html","","",1],["OptionsTester","FFMpeg\\FFProbe","FFMpeg\/FFProbe\/OptionsTester.html","","",1],["OptionsTesterInterface","FFMpeg\\FFProbe","FFMpeg\/FFProbe\/OptionsTesterInterface.html","","",1],["OutputParser","FFMpeg\\FFProbe","FFMpeg\/FFProbe\/OutputParser.html","","",1],["OutputParserInterface","FFMpeg\\FFProbe","FFMpeg\/FFProbe\/OutputParserInterface.html","","",1],["AudioFilterInterface","FFMpeg\\Filters\\Audio","FFMpeg\/Filters\/Audio\/AudioFilterInterface.html","","",1],["AudioFilters","FFMpeg\\Filters\\Audio","FFMpeg\/Filters\/Audio\/AudioFilters.html","","",1],["AudioResamplableFilter","FFMpeg\\Filters\\Audio","FFMpeg\/Filters\/Audio\/AudioResamplableFilter.html","","",1],["SimpleFilter","FFMpeg\\Filters\\Audio","FFMpeg\/Filters\/Audio\/SimpleFilter.html","","",1],["FilterInterface","FFMpeg\\Filters","FFMpeg\/Filters\/FilterInterface.html","","",1],["FiltersCollection","FFMpeg\\Filters","FFMpeg\/Filters\/FiltersCollection.html","","",1],["DisplayRatioFixerFilter","FFMpeg\\Filters\\Frame","FFMpeg\/Filters\/Frame\/DisplayRatioFixerFilter.html","","",1],["FrameFilterInterface","FFMpeg\\Filters\\Frame","FFMpeg\/Filters\/Frame\/FrameFilterInterface.html","","",1],["FrameFilters","FFMpeg\\Filters\\Frame","FFMpeg\/Filters\/Frame\/FrameFilters.html","","",1],["ClipFilter","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/ClipFilter.html","","",1],["CustomFilter","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/CustomFilter.html","","",1],["FrameRateFilter","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/FrameRateFilter.html","","",1],["ResizeFilter","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/ResizeFilter.html","","",1],["RotateFilter","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/RotateFilter.html","","",1],["SynchronizeFilter","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/SynchronizeFilter.html","","Synchronizes audio and video in case of desynchronized",1],["VideoFilterInterface","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/VideoFilterInterface.html","","",1],["VideoFilters","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/VideoFilters.html"," < AudioFilters","",1],["WatermarkFilter","FFMpeg\\Filters\\Video","FFMpeg\/Filters\/Video\/WatermarkFilter.html","","",1],["AudioInterface","FFMpeg\\Format","FFMpeg\/Format\/AudioInterface.html","","",1],["Aac","FFMpeg\\Format\\Audio","FFMpeg\/Format\/Audio\/Aac.html"," < DefaultAudio","The AAC audio format",1],["DefaultAudio","FFMpeg\\Format\\Audio","FFMpeg\/Format\/Audio\/DefaultAudio.html"," < EventEmitter","",1],["Flac","FFMpeg\\Format\\Audio","FFMpeg\/Format\/Audio\/Flac.html"," < DefaultAudio","The Flac audio format",1],["Mp3","FFMpeg\\Format\\Audio","FFMpeg\/Format\/Audio\/Mp3.html"," < DefaultAudio","The MP3 audio format",1],["Vorbis","FFMpeg\\Format\\Audio","FFMpeg\/Format\/Audio\/Vorbis.html"," < DefaultAudio","The Vorbis audio format",1],["Wav","FFMpeg\\Format\\Audio","FFMpeg\/Format\/Audio\/Wav.html"," < DefaultAudio","The WAV audio format",1],["FormatInterface","FFMpeg\\Format","FFMpeg\/Format\/FormatInterface.html","","",1],["FrameInterface","FFMpeg\\Format","FFMpeg\/Format\/FrameInterface.html","","",1],["AbstractProgressListener","FFMpeg\\Format\\ProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html"," < EventEmitter","",1],["AudioProgressListener","FFMpeg\\Format\\ProgressListener","FFMpeg\/Format\/ProgressListener\/AudioProgressListener.html"," < AbstractProgressListener","Parses ffmpeg stderr progress information.",1],["VideoProgressListener","FFMpeg\\Format\\ProgressListener","FFMpeg\/Format\/ProgressListener\/VideoProgressListener.html"," < AbstractProgressListener","Parses ffmpeg stderr progress information for video",1],["ProgressableInterface","FFMpeg\\Format","FFMpeg\/Format\/ProgressableInterface.html","","",1],["VideoInterface","FFMpeg\\Format","FFMpeg\/Format\/VideoInterface.html","","",1],["DefaultVideo","FFMpeg\\Format\\Video","FFMpeg\/Format\/Video\/DefaultVideo.html"," < DefaultAudio","The abstract default Video format",1],["Ogg","FFMpeg\\Format\\Video","FFMpeg\/Format\/Video\/Ogg.html"," < DefaultVideo","The Ogg video format",1],["WMV","FFMpeg\\Format\\Video","FFMpeg\/Format\/Video\/WMV.html"," < DefaultVideo","The WMV video format",1],["WMV3","FFMpeg\\Format\\Video","FFMpeg\/Format\/Video\/WMV3.html"," < DefaultVideo","The WMV video format",1],["WebM","FFMpeg\\Format\\Video","FFMpeg\/Format\/Video\/WebM.html"," < DefaultVideo","The WebM video format",1],["X264","FFMpeg\\Format\\Video","FFMpeg\/Format\/Video\/X264.html"," < DefaultVideo","The X264 video format",1],["AbstractMediaType","FFMpeg\\Media","FFMpeg\/Media\/AbstractMediaType.html","","",1],["AbstractStreamableMedia","FFMpeg\\Media","FFMpeg\/Media\/AbstractStreamableMedia.html"," < AbstractMediaType","",1],["Audio","FFMpeg\\Media","FFMpeg\/Media\/Audio.html"," < AbstractStreamableMedia","",1],["Frame","FFMpeg\\Media","FFMpeg\/Media\/Frame.html"," < AbstractMediaType","",1],["MediaTypeInterface","FFMpeg\\Media","FFMpeg\/Media\/MediaTypeInterface.html","","",1],["Video","FFMpeg\\Media","FFMpeg\/Media\/Video.html"," < Audio","",1],["AspectRatio::__construct","FFMpeg\\Coordinate\\AspectRatio","FFMpeg\/Coordinate\/AspectRatio.html#method___construct","($ratio)","",2],["AspectRatio::getValue","FFMpeg\\Coordinate\\AspectRatio","FFMpeg\/Coordinate\/AspectRatio.html#method_getValue","()","Returns the value of the ratio.",2],["AspectRatio::calculateWidth","FFMpeg\\Coordinate\\AspectRatio","FFMpeg\/Coordinate\/AspectRatio.html#method_calculateWidth","(Integer $height, Integer $modulus = 1)","Computes the best width for given height and modulus.",2],["AspectRatio::calculateHeight","FFMpeg\\Coordinate\\AspectRatio","FFMpeg\/Coordinate\/AspectRatio.html#method_calculateHeight","(Integer $width, Integer $modulus = 1)","Computes the best height for given width and modulus.",2],["AspectRatio::create","FFMpeg\\Coordinate\\AspectRatio","FFMpeg\/Coordinate\/AspectRatio.html#method_create","(Dimension<\/abbr><\/a> $dimension, Boolean $forceStandards = true)","Creates a ratio based on Dimension.",2],["Dimension::__construct","FFMpeg\\Coordinate\\Dimension","FFMpeg\/Coordinate\/Dimension.html#method___construct","(integer $width, integer $height)","",2],["Dimension::getWidth","FFMpeg\\Coordinate\\Dimension","FFMpeg\/Coordinate\/Dimension.html#method_getWidth","()","Returns width.",2],["Dimension::getHeight","FFMpeg\\Coordinate\\Dimension","FFMpeg\/Coordinate\/Dimension.html#method_getHeight","()","Returns height.",2],["Dimension::getRatio","FFMpeg\\Coordinate\\Dimension","FFMpeg\/Coordinate\/Dimension.html#method_getRatio","(type<\/abbr> $forceStandards = true)","Returns the ratio.",2],["FrameRate::__construct","FFMpeg\\Coordinate\\FrameRate","FFMpeg\/Coordinate\/FrameRate.html#method___construct","($value)","",2],["FrameRate::getValue","FFMpeg\\Coordinate\\FrameRate","FFMpeg\/Coordinate\/FrameRate.html#method_getValue","()","",2],["Point::__construct","FFMpeg\\Coordinate\\Point","FFMpeg\/Coordinate\/Point.html#method___construct","($x, $y)","",2],["Point::getX","FFMpeg\\Coordinate\\Point","FFMpeg\/Coordinate\/Point.html#method_getX","()","",2],["Point::getY","FFMpeg\\Coordinate\\Point","FFMpeg\/Coordinate\/Point.html#method_getY","()","",2],["TimeCode::__construct","FFMpeg\\Coordinate\\TimeCode","FFMpeg\/Coordinate\/TimeCode.html#method___construct","($hours, $minutes, $seconds, $frames)","",2],["TimeCode::__toString","FFMpeg\\Coordinate\\TimeCode","FFMpeg\/Coordinate\/TimeCode.html#method___toString","()","",2],["TimeCode::fromString","FFMpeg\\Coordinate\\TimeCode","FFMpeg\/Coordinate\/TimeCode.html#method_fromString","(string $timecode)","Creates timecode from string.",2],["TimeCode::fromSeconds","FFMpeg\\Coordinate\\TimeCode","FFMpeg\/Coordinate\/TimeCode.html#method_fromSeconds","(float $quantity)","Creates timecode from number of seconds.",2],["FFMpegDriver::getName","FFMpeg\\Driver\\FFMpegDriver","FFMpeg\/Driver\/FFMpegDriver.html#method_getName","()","{@inheritdoc}",2],["FFMpegDriver::create","FFMpeg\\Driver\\FFMpegDriver","FFMpeg\/Driver\/FFMpegDriver.html#method_create","(LoggerInterface<\/abbr> $logger = null, array|Configuration<\/abbr> $configuration = array())","Creates an FFMpegDriver.",2],["FFProbeDriver::getName","FFMpeg\\Driver\\FFProbeDriver","FFMpeg\/Driver\/FFProbeDriver.html#method_getName","()","{@inheritdoc}",2],["FFProbeDriver::create","FFMpeg\\Driver\\FFProbeDriver","FFMpeg\/Driver\/FFProbeDriver.html#method_create","(array|ConfigurationInterface<\/abbr> $configuration, LoggerInterface<\/abbr> $logger = null)","Creates an FFProbeDriver.",2],["FFMpeg::__construct","FFMpeg\\FFMpeg","FFMpeg\/FFMpeg.html#method___construct","(FFMpegDriver<\/abbr><\/a> $ffmpeg, FFProbe<\/abbr><\/a> $ffprobe)","",2],["FFMpeg::setFFProbe","FFMpeg\\FFMpeg","FFMpeg\/FFMpeg.html#method_setFFProbe","(FFProbe<\/abbr><\/a> $ffprobe)","Sets FFProbe.",2],["FFMpeg::getFFProbe","FFMpeg\\FFMpeg","FFMpeg\/FFMpeg.html#method_getFFProbe","()","Gets FFProbe.",2],["FFMpeg::setFFMpegDriver","FFMpeg\\FFMpeg","FFMpeg\/FFMpeg.html#method_setFFMpegDriver","(FFMpegDriver<\/abbr><\/a> $ffmpeg)","Sets the ffmpeg driver.",2],["FFMpeg::getFFMpegDriver","FFMpeg\\FFMpeg","FFMpeg\/FFMpeg.html#method_getFFMpegDriver","()","Gets the ffmpeg driver.",2],["FFMpeg::open","FFMpeg\\FFMpeg","FFMpeg\/FFMpeg.html#method_open","(string $pathfile)","Opens a file in order to be processed.",2],["FFMpeg::create","FFMpeg\\FFMpeg","FFMpeg\/FFMpeg.html#method_create","(array|ConfigurationInterface<\/abbr> $configuration = array(), LoggerInterface<\/abbr> $logger = null, FFProbe<\/abbr><\/a> $probe = null)","Creates a new FFMpeg instance.",2],["FFMpegServiceProvider::register","FFMpeg\\FFMpegServiceProvider","FFMpeg\/FFMpegServiceProvider.html#method_register","(Application<\/abbr> $app)","",2],["FFMpegServiceProvider::boot","FFMpeg\\FFMpegServiceProvider","FFMpeg\/FFMpegServiceProvider.html#method_boot","(Application<\/abbr> $app)","",2],["FFProbe::__construct","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method___construct","(FFProbeDriver<\/abbr><\/a> $ffprobe, Cache<\/abbr> $cache)","",2],["FFProbe::getParser","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_getParser","()","",2],["FFProbe::setParser","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_setParser","(OutputParserInterface<\/abbr><\/a> $parser)","",2],["FFProbe::getFFProbeDriver","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_getFFProbeDriver","()","",2],["FFProbe::setFFProbeDriver","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_setFFProbeDriver","(FFProbeDriver<\/abbr><\/a> $ffprobe)","",2],["FFProbe::setOptionsTester","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_setOptionsTester","(OptionsTesterInterface<\/abbr><\/a> $tester)","",2],["FFProbe::getOptionsTester","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_getOptionsTester","()","",2],["FFProbe::setCache","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_setCache","(Cache<\/abbr> $cache)","",2],["FFProbe::getCache","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_getCache","()","",2],["FFProbe::getMapper","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_getMapper","()","",2],["FFProbe::setMapper","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_setMapper","(MapperInterface<\/abbr><\/a> $mapper)","",2],["FFProbe::format","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_format","(string $pathfile)","",2],["FFProbe::streams","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_streams","(string $pathfile)","",2],["FFProbe::create","FFMpeg\\FFProbe","FFMpeg\/FFProbe.html#method_create","(array|ConfigurationInterface<\/abbr> $configuration = array(), LoggerInterface<\/abbr> $logger = null, Cache<\/abbr> $cache = null)","",2],["AbstractData::__construct","FFMpeg\\FFProbe\\DataMapping\\AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html#method___construct","(array $properties)","",2],["AbstractData::has","FFMpeg\\FFProbe\\DataMapping\\AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html#method_has","(string $property)","Returns true if data has property.",2],["AbstractData::get","FFMpeg\\FFProbe\\DataMapping\\AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html#method_get","(string $property)","Returns the property value given its name.",2],["AbstractData::set","FFMpeg\\FFProbe\\DataMapping\\AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html#method_set","(string $property, mixed $value)","Sets the property value given its name.",2],["AbstractData::keys","FFMpeg\\FFProbe\\DataMapping\\AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html#method_keys","()","Returns all property names.",2],["AbstractData::all","FFMpeg\\FFProbe\\DataMapping\\AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html#method_all","()","Returns all properties and their values.",2],["AbstractData::count","FFMpeg\\FFProbe\\DataMapping\\AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html#method_count","()","{@inheritdoc}",2],["Stream::isAudio","FFMpeg\\FFProbe\\DataMapping\\Stream","FFMpeg\/FFProbe\/DataMapping\/Stream.html#method_isAudio","()","Returns true if the stream is an audio stream.",2],["Stream::isVideo","FFMpeg\\FFProbe\\DataMapping\\Stream","FFMpeg\/FFProbe\/DataMapping\/Stream.html#method_isVideo","()","Returns true if the stream is a video stream.",2],["Stream::getDimensions","FFMpeg\\FFProbe\\DataMapping\\Stream","FFMpeg\/FFProbe\/DataMapping\/Stream.html#method_getDimensions","()","Returns the dimension of the video stream.",2],["StreamCollection::__construct","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method___construct","(array $streams = array())","",2],["StreamCollection::first","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method_first","()","Returns the first stream of the collection, null if",2],["StreamCollection::add","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method_add","(Stream<\/abbr><\/a> $stream)","Adds a stream to the collection.",2],["StreamCollection::videos","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method_videos","()","Returns a new StreamCollection with only video streams.",2],["StreamCollection::audios","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method_audios","()","Returns a new StreamCollection with only audio streams.",2],["StreamCollection::count","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method_count","()","{@inheritdoc}",2],["StreamCollection::all","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method_all","()","Returns the array of contained streams.",2],["StreamCollection::getIterator","FFMpeg\\FFProbe\\DataMapping\\StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html#method_getIterator","()","{@inheritdoc}",2],["Mapper::map","FFMpeg\\FFProbe\\Mapper","FFMpeg\/FFProbe\/Mapper.html#method_map","(string $type, string $data)","Maps data given its type.",2],["MapperInterface::map","FFMpeg\\FFProbe\\MapperInterface","FFMpeg\/FFProbe\/MapperInterface.html#method_map","(string $type, string $data)","Maps data given its type.",2],["OptionsTester::__construct","FFMpeg\\FFProbe\\OptionsTester","FFMpeg\/FFProbe\/OptionsTester.html#method___construct","(FFProbeDriver<\/abbr><\/a> $ffprobe, Cache<\/abbr> $cache)","",2],["OptionsTester::has","FFMpeg\\FFProbe\\OptionsTester","FFMpeg\/FFProbe\/OptionsTester.html#method_has","(string $name)","Tells if the given option is supported by ffprobe.",2],["OptionsTesterInterface::has","FFMpeg\\FFProbe\\OptionsTesterInterface","FFMpeg\/FFProbe\/OptionsTesterInterface.html#method_has","(string $name)","Tells if the given option is supported by ffprobe.",2],["OutputParser::parse","FFMpeg\\FFProbe\\OutputParser","FFMpeg\/FFProbe\/OutputParser.html#method_parse","(string $type, string $data)","Parses ffprobe raw output.",2],["OutputParserInterface::parse","FFMpeg\\FFProbe\\OutputParserInterface","FFMpeg\/FFProbe\/OutputParserInterface.html#method_parse","(string $type, string $data)","Parses ffprobe raw output.",2],["AudioFilterInterface::apply","FFMpeg\\Filters\\Audio\\AudioFilterInterface","FFMpeg\/Filters\/Audio\/AudioFilterInterface.html#method_apply","(Audio<\/abbr><\/a> $audio, AudioInterface<\/abbr><\/a> $format)","Applies the filter on the the Audio media given an",2],["AudioFilters::__construct","FFMpeg\\Filters\\Audio\\AudioFilters","FFMpeg\/Filters\/Audio\/AudioFilters.html#method___construct","(Audio<\/abbr><\/a> $media)","",2],["AudioFilters::resample","FFMpeg\\Filters\\Audio\\AudioFilters","FFMpeg\/Filters\/Audio\/AudioFilters.html#method_resample","(Integer $rate)","Resamples the audio file.",2],["AudioResamplableFilter::__construct","FFMpeg\\Filters\\Audio\\AudioResamplableFilter","FFMpeg\/Filters\/Audio\/AudioResamplableFilter.html#method___construct","($rate, $priority)","",2],["AudioResamplableFilter::getPriority","FFMpeg\\Filters\\Audio\\AudioResamplableFilter","FFMpeg\/Filters\/Audio\/AudioResamplableFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["AudioResamplableFilter::getRate","FFMpeg\\Filters\\Audio\\AudioResamplableFilter","FFMpeg\/Filters\/Audio\/AudioResamplableFilter.html#method_getRate","()","",2],["AudioResamplableFilter::apply","FFMpeg\\Filters\\Audio\\AudioResamplableFilter","FFMpeg\/Filters\/Audio\/AudioResamplableFilter.html#method_apply","(Audio<\/abbr><\/a> $audio, AudioInterface<\/abbr><\/a> $format)","Applies the filter on the the Audio media given an",2],["SimpleFilter::__construct","FFMpeg\\Filters\\Audio\\SimpleFilter","FFMpeg\/Filters\/Audio\/SimpleFilter.html#method___construct","(array $params, $priority)","",2],["SimpleFilter::getPriority","FFMpeg\\Filters\\Audio\\SimpleFilter","FFMpeg\/Filters\/Audio\/SimpleFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["SimpleFilter::apply","FFMpeg\\Filters\\Audio\\SimpleFilter","FFMpeg\/Filters\/Audio\/SimpleFilter.html#method_apply","(Audio<\/abbr><\/a> $audio, AudioInterface<\/abbr><\/a> $format)","Applies the filter on the the Audio media given an",2],["FilterInterface::getPriority","FFMpeg\\Filters\\FilterInterface","FFMpeg\/Filters\/FilterInterface.html#method_getPriority","()","Returns the priority of the filter.",2],["FiltersCollection::add","FFMpeg\\Filters\\FiltersCollection","FFMpeg\/Filters\/FiltersCollection.html#method_add","(FilterInterface<\/abbr><\/a> $filter)","",2],["FiltersCollection::count","FFMpeg\\Filters\\FiltersCollection","FFMpeg\/Filters\/FiltersCollection.html#method_count","()","{@inheritdoc}",2],["FiltersCollection::getIterator","FFMpeg\\Filters\\FiltersCollection","FFMpeg\/Filters\/FiltersCollection.html#method_getIterator","()","{@inheritdoc}",2],["DisplayRatioFixerFilter::__construct","FFMpeg\\Filters\\Frame\\DisplayRatioFixerFilter","FFMpeg\/Filters\/Frame\/DisplayRatioFixerFilter.html#method___construct","($priority)","",2],["DisplayRatioFixerFilter::getPriority","FFMpeg\\Filters\\Frame\\DisplayRatioFixerFilter","FFMpeg\/Filters\/Frame\/DisplayRatioFixerFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["DisplayRatioFixerFilter::apply","FFMpeg\\Filters\\Frame\\DisplayRatioFixerFilter","FFMpeg\/Filters\/Frame\/DisplayRatioFixerFilter.html#method_apply","(Frame<\/abbr><\/a> $frame)","",2],["FrameFilterInterface::apply","FFMpeg\\Filters\\Frame\\FrameFilterInterface","FFMpeg\/Filters\/Frame\/FrameFilterInterface.html#method_apply","(Frame<\/abbr><\/a> $frame)","",2],["FrameFilters::__construct","FFMpeg\\Filters\\Frame\\FrameFilters","FFMpeg\/Filters\/Frame\/FrameFilters.html#method___construct","(Frame<\/abbr><\/a> $frame)","",2],["FrameFilters::fixDisplayRatio","FFMpeg\\Filters\\Frame\\FrameFilters","FFMpeg\/Filters\/Frame\/FrameFilters.html#method_fixDisplayRatio","()","Fixes the display ratio of the output frame.",2],["ClipFilter::__construct","FFMpeg\\Filters\\Video\\ClipFilter","FFMpeg\/Filters\/Video\/ClipFilter.html#method___construct","(TimeCode<\/abbr><\/a> $start, TimeCode<\/abbr><\/a> $duration = null, $priority)","",2],["ClipFilter::getPriority","FFMpeg\\Filters\\Video\\ClipFilter","FFMpeg\/Filters\/Video\/ClipFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["ClipFilter::getStart","FFMpeg\\Filters\\Video\\ClipFilter","FFMpeg\/Filters\/Video\/ClipFilter.html#method_getStart","()","",2],["ClipFilter::getDuration","FFMpeg\\Filters\\Video\\ClipFilter","FFMpeg\/Filters\/Video\/ClipFilter.html#method_getDuration","()","",2],["ClipFilter::apply","FFMpeg\\Filters\\Video\\ClipFilter","FFMpeg\/Filters\/Video\/ClipFilter.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["CustomFilter::__construct","FFMpeg\\Filters\\Video\\CustomFilter","FFMpeg\/Filters\/Video\/CustomFilter.html#method___construct","(string $filter, int $priority)","A custom filter, useful if you want to build complex",2],["CustomFilter::getPriority","FFMpeg\\Filters\\Video\\CustomFilter","FFMpeg\/Filters\/Video\/CustomFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["CustomFilter::apply","FFMpeg\\Filters\\Video\\CustomFilter","FFMpeg\/Filters\/Video\/CustomFilter.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["FrameRateFilter::__construct","FFMpeg\\Filters\\Video\\FrameRateFilter","FFMpeg\/Filters\/Video\/FrameRateFilter.html#method___construct","(FrameRate<\/abbr><\/a> $rate, $gop, $priority)","",2],["FrameRateFilter::getPriority","FFMpeg\\Filters\\Video\\FrameRateFilter","FFMpeg\/Filters\/Video\/FrameRateFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["FrameRateFilter::getFrameRate","FFMpeg\\Filters\\Video\\FrameRateFilter","FFMpeg\/Filters\/Video\/FrameRateFilter.html#method_getFrameRate","()","Returns the frame rate.",2],["FrameRateFilter::getGOP","FFMpeg\\Filters\\Video\\FrameRateFilter","FFMpeg\/Filters\/Video\/FrameRateFilter.html#method_getGOP","()","Returns the GOP size.",2],["FrameRateFilter::apply","FFMpeg\\Filters\\Video\\FrameRateFilter","FFMpeg\/Filters\/Video\/FrameRateFilter.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["ResizeFilter::__construct","FFMpeg\\Filters\\Video\\ResizeFilter","FFMpeg\/Filters\/Video\/ResizeFilter.html#method___construct","(Dimension<\/abbr><\/a> $dimension, $mode = self::RESIZEMODE_FIT, $forceStandards = true, $priority)","",2],["ResizeFilter::getPriority","FFMpeg\\Filters\\Video\\ResizeFilter","FFMpeg\/Filters\/Video\/ResizeFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["ResizeFilter::getDimension","FFMpeg\\Filters\\Video\\ResizeFilter","FFMpeg\/Filters\/Video\/ResizeFilter.html#method_getDimension","()","",2],["ResizeFilter::getMode","FFMpeg\\Filters\\Video\\ResizeFilter","FFMpeg\/Filters\/Video\/ResizeFilter.html#method_getMode","()","",2],["ResizeFilter::areStandardsForced","FFMpeg\\Filters\\Video\\ResizeFilter","FFMpeg\/Filters\/Video\/ResizeFilter.html#method_areStandardsForced","()","",2],["ResizeFilter::apply","FFMpeg\\Filters\\Video\\ResizeFilter","FFMpeg\/Filters\/Video\/ResizeFilter.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["RotateFilter::__construct","FFMpeg\\Filters\\Video\\RotateFilter","FFMpeg\/Filters\/Video\/RotateFilter.html#method___construct","($angle, $priority)","",2],["RotateFilter::getPriority","FFMpeg\\Filters\\Video\\RotateFilter","FFMpeg\/Filters\/Video\/RotateFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["RotateFilter::getAngle","FFMpeg\\Filters\\Video\\RotateFilter","FFMpeg\/Filters\/Video\/RotateFilter.html#method_getAngle","()","",2],["RotateFilter::apply","FFMpeg\\Filters\\Video\\RotateFilter","FFMpeg\/Filters\/Video\/RotateFilter.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["SynchronizeFilter::__construct","FFMpeg\\Filters\\Video\\SynchronizeFilter","FFMpeg\/Filters\/Video\/SynchronizeFilter.html#method___construct","($priority = 12)","",2],["SynchronizeFilter::getPriority","FFMpeg\\Filters\\Video\\SynchronizeFilter","FFMpeg\/Filters\/Video\/SynchronizeFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["SynchronizeFilter::apply","FFMpeg\\Filters\\Video\\SynchronizeFilter","FFMpeg\/Filters\/Video\/SynchronizeFilter.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["VideoFilterInterface::apply","FFMpeg\\Filters\\Video\\VideoFilterInterface","FFMpeg\/Filters\/Video\/VideoFilterInterface.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["VideoFilters::__construct","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method___construct","(Video<\/abbr><\/a> $media)","",2],["VideoFilters::resize","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method_resize","(Dimension<\/abbr><\/a> $dimension, string $mode = ResizeFilter::RESIZEMODE_FIT, Boolean $forceStandards = true)","Resizes a video to a given dimension.",2],["VideoFilters::framerate","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method_framerate","(FrameRate<\/abbr><\/a> $framerate, type<\/abbr> $gop)","Changes the video framerate.",2],["VideoFilters::synchronize","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method_synchronize","()","Synchronizes audio and video.",2],["VideoFilters::clip","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method_clip","(TimeCode<\/abbr><\/a> $start, TimeCode<\/abbr><\/a> $duration = null)","Clips (cuts) the video.",2],["VideoFilters::audioResample","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method_audioResample","(Integer $rate)","Resamples the audio file.",2],["VideoFilters::rotate","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method_rotate","($angle)","",2],["VideoFilters::watermark","FFMpeg\\Filters\\Video\\VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html#method_watermark","(string $imagePath, array $coordinates = array())","",2],["WatermarkFilter::__construct","FFMpeg\\Filters\\Video\\WatermarkFilter","FFMpeg\/Filters\/Video\/WatermarkFilter.html#method___construct","($watermarkPath, array $coordinates = array(), $priority)","",2],["WatermarkFilter::getPriority","FFMpeg\\Filters\\Video\\WatermarkFilter","FFMpeg\/Filters\/Video\/WatermarkFilter.html#method_getPriority","()","Returns the priority of the filter.",2],["WatermarkFilter::apply","FFMpeg\\Filters\\Video\\WatermarkFilter","FFMpeg\/Filters\/Video\/WatermarkFilter.html#method_apply","(Video<\/abbr><\/a> $video, VideoInterface<\/abbr><\/a> $format)","Applies the filter on the the Video media given an",2],["AudioInterface::getAudioKiloBitrate","FFMpeg\\Format\\AudioInterface","FFMpeg\/Format\/AudioInterface.html#method_getAudioKiloBitrate","()","Gets the audio kiloBitrate value.",2],["AudioInterface::getAudioChannels","FFMpeg\\Format\\AudioInterface","FFMpeg\/Format\/AudioInterface.html#method_getAudioChannels","()","Gets the audio channels value.",2],["AudioInterface::getAudioCodec","FFMpeg\\Format\\AudioInterface","FFMpeg\/Format\/AudioInterface.html#method_getAudioCodec","()","Returns the audio codec.",2],["AudioInterface::getAvailableAudioCodecs","FFMpeg\\Format\\AudioInterface","FFMpeg\/Format\/AudioInterface.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["Aac::__construct","FFMpeg\\Format\\Audio\\Aac","FFMpeg\/Format\/Audio\/Aac.html#method___construct","()","",2],["Aac::getAvailableAudioCodecs","FFMpeg\\Format\\Audio\\Aac","FFMpeg\/Format\/Audio\/Aac.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["DefaultAudio::getExtraParams","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_getExtraParams","()","Returns an array of extra parameters to add to ffmpeg",2],["DefaultAudio::getAudioCodec","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_getAudioCodec","()","Returns the audio codec.",2],["DefaultAudio::setAudioCodec","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_setAudioCodec","(string $audioCodec)","Sets the audio codec, Should be in the available ones,",2],["DefaultAudio::getAudioKiloBitrate","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_getAudioKiloBitrate","()","Gets the audio kiloBitrate value.",2],["DefaultAudio::setAudioKiloBitrate","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_setAudioKiloBitrate","(integer $kiloBitrate)","Sets the kiloBitrate value.",2],["DefaultAudio::getAudioChannels","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_getAudioChannels","()","Gets the audio channels value.",2],["DefaultAudio::setAudioChannels","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_setAudioChannels","(integer $channels)","Sets the channels value.",2],["DefaultAudio::createProgressListener","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_createProgressListener","(MediaTypeInterface<\/abbr><\/a> $media, FFProbe<\/abbr><\/a> $ffprobe, Integer $pass, Integer $total)","Creates the progress listener.",2],["DefaultAudio::getPasses","FFMpeg\\Format\\Audio\\DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html#method_getPasses","()","Returns the number of passes.",2],["Flac::__construct","FFMpeg\\Format\\Audio\\Flac","FFMpeg\/Format\/Audio\/Flac.html#method___construct","()","",2],["Flac::getAvailableAudioCodecs","FFMpeg\\Format\\Audio\\Flac","FFMpeg\/Format\/Audio\/Flac.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["Mp3::__construct","FFMpeg\\Format\\Audio\\Mp3","FFMpeg\/Format\/Audio\/Mp3.html#method___construct","()","",2],["Mp3::getAvailableAudioCodecs","FFMpeg\\Format\\Audio\\Mp3","FFMpeg\/Format\/Audio\/Mp3.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["Vorbis::__construct","FFMpeg\\Format\\Audio\\Vorbis","FFMpeg\/Format\/Audio\/Vorbis.html#method___construct","()","",2],["Vorbis::getExtraParams","FFMpeg\\Format\\Audio\\Vorbis","FFMpeg\/Format\/Audio\/Vorbis.html#method_getExtraParams","()","Returns an array of extra parameters to add to ffmpeg",2],["Vorbis::getAvailableAudioCodecs","FFMpeg\\Format\\Audio\\Vorbis","FFMpeg\/Format\/Audio\/Vorbis.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["Wav::__construct","FFMpeg\\Format\\Audio\\Wav","FFMpeg\/Format\/Audio\/Wav.html#method___construct","()","",2],["Wav::getAvailableAudioCodecs","FFMpeg\\Format\\Audio\\Wav","FFMpeg\/Format\/Audio\/Wav.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["FormatInterface::getPasses","FFMpeg\\Format\\FormatInterface","FFMpeg\/Format\/FormatInterface.html#method_getPasses","()","Returns the number of passes.",2],["FormatInterface::getExtraParams","FFMpeg\\Format\\FormatInterface","FFMpeg\/Format\/FormatInterface.html#method_getExtraParams","()","Returns an array of extra parameters to add to ffmpeg",2],["AbstractProgressListener::__construct","FFMpeg\\Format\\ProgressListener\\AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html#method___construct","(FFProbe<\/abbr><\/a> $ffprobe, string $pathfile, integer $currentPass, integer $totalPass)","",2],["AbstractProgressListener::getFFProbe","FFMpeg\\Format\\ProgressListener\\AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html#method_getFFProbe","()","",2],["AbstractProgressListener::getPathfile","FFMpeg\\Format\\ProgressListener\\AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html#method_getPathfile","()","",2],["AbstractProgressListener::getCurrentPass","FFMpeg\\Format\\ProgressListener\\AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html#method_getCurrentPass","()","",2],["AbstractProgressListener::getTotalPass","FFMpeg\\Format\\ProgressListener\\AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html#method_getTotalPass","()","",2],["AbstractProgressListener::handle","FFMpeg\\Format\\ProgressListener\\AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html#method_handle","($type, $data)","{@inheritdoc}",2],["AbstractProgressListener::forwardedEvents","FFMpeg\\Format\\ProgressListener\\AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html#method_forwardedEvents","()","{@inheritdoc}",2],["AudioProgressListener::getPattern","FFMpeg\\Format\\ProgressListener\\AudioProgressListener","FFMpeg\/Format\/ProgressListener\/AudioProgressListener.html#method_getPattern","()","",2],["VideoProgressListener::getPattern","FFMpeg\\Format\\ProgressListener\\VideoProgressListener","FFMpeg\/Format\/ProgressListener\/VideoProgressListener.html#method_getPattern","()","",2],["ProgressableInterface::createProgressListener","FFMpeg\\Format\\ProgressableInterface","FFMpeg\/Format\/ProgressableInterface.html#method_createProgressListener","(MediaTypeInterface<\/abbr><\/a> $media, FFProbe<\/abbr><\/a> $ffprobe, Integer $pass, Integer $total)","Creates the progress listener.",2],["VideoInterface::getKiloBitrate","FFMpeg\\Format\\VideoInterface","FFMpeg\/Format\/VideoInterface.html#method_getKiloBitrate","()","Gets the kiloBitrate value.",2],["VideoInterface::getModulus","FFMpeg\\Format\\VideoInterface","FFMpeg\/Format\/VideoInterface.html#method_getModulus","()","Returns the modulus used by the Resizable video.",2],["VideoInterface::getVideoCodec","FFMpeg\\Format\\VideoInterface","FFMpeg\/Format\/VideoInterface.html#method_getVideoCodec","()","Returns the video codec.",2],["VideoInterface::supportBFrames","FFMpeg\\Format\\VideoInterface","FFMpeg\/Format\/VideoInterface.html#method_supportBFrames","()","Returns true if the current format supports B-Frames.",2],["VideoInterface::getAvailableVideoCodecs","FFMpeg\\Format\\VideoInterface","FFMpeg\/Format\/VideoInterface.html#method_getAvailableVideoCodecs","()","Returns the list of available video codecs for this",2],["DefaultVideo::getKiloBitrate","FFMpeg\\Format\\Video\\DefaultVideo","FFMpeg\/Format\/Video\/DefaultVideo.html#method_getKiloBitrate","()","Gets the kiloBitrate value.",2],["DefaultVideo::setKiloBitrate","FFMpeg\\Format\\Video\\DefaultVideo","FFMpeg\/Format\/Video\/DefaultVideo.html#method_setKiloBitrate","(integer $kiloBitrate)","Sets the kiloBitrate value.",2],["DefaultVideo::getVideoCodec","FFMpeg\\Format\\Video\\DefaultVideo","FFMpeg\/Format\/Video\/DefaultVideo.html#method_getVideoCodec","()","Returns the video codec.",2],["DefaultVideo::setVideoCodec","FFMpeg\\Format\\Video\\DefaultVideo","FFMpeg\/Format\/Video\/DefaultVideo.html#method_setVideoCodec","(string $videoCodec)","Sets the video codec, Should be in the available ones,",2],["DefaultVideo::getModulus","FFMpeg\\Format\\Video\\DefaultVideo","FFMpeg\/Format\/Video\/DefaultVideo.html#method_getModulus","()","",2],["DefaultVideo::createProgressListener","FFMpeg\\Format\\Video\\DefaultVideo","FFMpeg\/Format\/Video\/DefaultVideo.html#method_createProgressListener","(MediaTypeInterface<\/abbr><\/a> $media, FFProbe<\/abbr><\/a> $ffprobe, Integer $pass, Integer $total)","Creates the progress listener.",2],["Ogg::__construct","FFMpeg\\Format\\Video\\Ogg","FFMpeg\/Format\/Video\/Ogg.html#method___construct","($audioCodec = 'libvorbis', $videoCodec = 'libtheora')","",2],["Ogg::supportBFrames","FFMpeg\\Format\\Video\\Ogg","FFMpeg\/Format\/Video\/Ogg.html#method_supportBFrames","()","Returns true if the current format supports B-Frames.",2],["Ogg::getAvailableAudioCodecs","FFMpeg\\Format\\Video\\Ogg","FFMpeg\/Format\/Video\/Ogg.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["Ogg::getAvailableVideoCodecs","FFMpeg\\Format\\Video\\Ogg","FFMpeg\/Format\/Video\/Ogg.html#method_getAvailableVideoCodecs","()","Returns the list of available video codecs for this",2],["WMV::__construct","FFMpeg\\Format\\Video\\WMV","FFMpeg\/Format\/Video\/WMV.html#method___construct","($audioCodec = 'wmav2', $videoCodec = 'wmv2')","",2],["WMV::supportBFrames","FFMpeg\\Format\\Video\\WMV","FFMpeg\/Format\/Video\/WMV.html#method_supportBFrames","()","Returns true if the current format supports B-Frames.",2],["WMV::getAvailableAudioCodecs","FFMpeg\\Format\\Video\\WMV","FFMpeg\/Format\/Video\/WMV.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["WMV::getAvailableVideoCodecs","FFMpeg\\Format\\Video\\WMV","FFMpeg\/Format\/Video\/WMV.html#method_getAvailableVideoCodecs","()","Returns the list of available video codecs for this",2],["WMV3::__construct","FFMpeg\\Format\\Video\\WMV3","FFMpeg\/Format\/Video\/WMV3.html#method___construct","($audioCodec = 'wmav3', $videoCodec = 'wmv3')","",2],["WMV3::supportBFrames","FFMpeg\\Format\\Video\\WMV3","FFMpeg\/Format\/Video\/WMV3.html#method_supportBFrames","()","Returns true if the current format supports B-Frames.",2],["WMV3::getAvailableAudioCodecs","FFMpeg\\Format\\Video\\WMV3","FFMpeg\/Format\/Video\/WMV3.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["WMV3::getAvailableVideoCodecs","FFMpeg\\Format\\Video\\WMV3","FFMpeg\/Format\/Video\/WMV3.html#method_getAvailableVideoCodecs","()","Returns the list of available video codecs for this",2],["WebM::__construct","FFMpeg\\Format\\Video\\WebM","FFMpeg\/Format\/Video\/WebM.html#method___construct","($audioCodec = 'libvorbis', $videoCodec = 'libvpx')","",2],["WebM::supportBFrames","FFMpeg\\Format\\Video\\WebM","FFMpeg\/Format\/Video\/WebM.html#method_supportBFrames","()","Returns true if the current format supports B-Frames.",2],["WebM::getExtraParams","FFMpeg\\Format\\Video\\WebM","FFMpeg\/Format\/Video\/WebM.html#method_getExtraParams","()","Returns an array of extra parameters to add to ffmpeg",2],["WebM::getAvailableAudioCodecs","FFMpeg\\Format\\Video\\WebM","FFMpeg\/Format\/Video\/WebM.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["WebM::getAvailableVideoCodecs","FFMpeg\\Format\\Video\\WebM","FFMpeg\/Format\/Video\/WebM.html#method_getAvailableVideoCodecs","()","Returns the list of available video codecs for this",2],["X264::__construct","FFMpeg\\Format\\Video\\X264","FFMpeg\/Format\/Video\/X264.html#method___construct","($audioCodec = 'libfaac', $videoCodec = 'libx264')","",2],["X264::supportBFrames","FFMpeg\\Format\\Video\\X264","FFMpeg\/Format\/Video\/X264.html#method_supportBFrames","()","Returns true if the current format supports B-Frames.",2],["X264::setBFramesSupport","FFMpeg\\Format\\Video\\X264","FFMpeg\/Format\/Video\/X264.html#method_setBFramesSupport","($support<\/abbr> $support)","",2],["X264::getAvailableAudioCodecs","FFMpeg\\Format\\Video\\X264","FFMpeg\/Format\/Video\/X264.html#method_getAvailableAudioCodecs","()","Returns the list of available audio codecs for this",2],["X264::getAvailableVideoCodecs","FFMpeg\\Format\\Video\\X264","FFMpeg\/Format\/Video\/X264.html#method_getAvailableVideoCodecs","()","Returns the list of available video codecs for this",2],["X264::getPasses","FFMpeg\\Format\\Video\\X264","FFMpeg\/Format\/Video\/X264.html#method_getPasses","()","Returns the number of passes.",2],["X264::getModulus","FFMpeg\\Format\\Video\\X264","FFMpeg\/Format\/Video\/X264.html#method_getModulus","()","",2],["AbstractMediaType::__construct","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method___construct","($pathfile, FFMpegDriver<\/abbr><\/a> $driver, FFProbe<\/abbr><\/a> $ffprobe)","",2],["AbstractMediaType::getFFMpegDriver","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method_getFFMpegDriver","()","",2],["AbstractMediaType::setFFMpegDriver","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method_setFFMpegDriver","(FFMpegDriver<\/abbr><\/a> $driver)","",2],["AbstractMediaType::getFFProbe","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method_getFFProbe","()","",2],["AbstractMediaType::setFFProbe","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method_setFFProbe","(FFProbe<\/abbr><\/a> $ffprobe)","",2],["AbstractMediaType::getPathfile","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method_getPathfile","()","",2],["AbstractMediaType::setFiltersCollection","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method_setFiltersCollection","(FiltersCollection<\/abbr><\/a> $filters)","",2],["AbstractMediaType::getFiltersCollection","FFMpeg\\Media\\AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html#method_getFiltersCollection","()","",2],["AbstractStreamableMedia::getStreams","FFMpeg\\Media\\AbstractStreamableMedia","FFMpeg\/Media\/AbstractStreamableMedia.html#method_getStreams","()","",2],["AbstractStreamableMedia::getFormat","FFMpeg\\Media\\AbstractStreamableMedia","FFMpeg\/Media\/AbstractStreamableMedia.html#method_getFormat","()","",2],["Audio::filters","FFMpeg\\Media\\Audio","FFMpeg\/Media\/Audio.html#method_filters","()","Returns the available filters.",2],["Audio::addFilter","FFMpeg\\Media\\Audio","FFMpeg\/Media\/Audio.html#method_addFilter","(FilterInterface<\/abbr><\/a> $filter)","{@inheritdoc}",2],["Audio::save","FFMpeg\\Media\\Audio","FFMpeg\/Media\/Audio.html#method_save","(FormatInterface<\/abbr><\/a> $format, string $outputPathfile)","Exports the audio in the desired format, applies registered",2],["Frame::__construct","FFMpeg\\Media\\Frame","FFMpeg\/Media\/Frame.html#method___construct","(Video<\/abbr><\/a> $video, FFMpegDriver<\/abbr><\/a> $driver, FFProbe<\/abbr><\/a> $ffprobe, TimeCode<\/abbr><\/a> $timecode)","",2],["Frame::getVideo","FFMpeg\\Media\\Frame","FFMpeg\/Media\/Frame.html#method_getVideo","()","Returns the video related to the frame.",2],["Frame::filters","FFMpeg\\Media\\Frame","FFMpeg\/Media\/Frame.html#method_filters","()","Returns the available filters.",2],["Frame::addFilter","FFMpeg\\Media\\Frame","FFMpeg\/Media\/Frame.html#method_addFilter","(FrameFilterInterface<\/abbr><\/a> $filter)","{@inheritdoc}",2],["Frame::getTimeCode","FFMpeg\\Media\\Frame","FFMpeg\/Media\/Frame.html#method_getTimeCode","()","",2],["Frame::save","FFMpeg\\Media\\Frame","FFMpeg\/Media\/Frame.html#method_save","(string $pathfile, Boolean $accurate = false)","Saves the frame in the given filename.",2],["MediaTypeInterface::filters","FFMpeg\\Media\\MediaTypeInterface","FFMpeg\/Media\/MediaTypeInterface.html#method_filters","()","Returns the available filters.",2],["MediaTypeInterface::getPathfile","FFMpeg\\Media\\MediaTypeInterface","FFMpeg\/Media\/MediaTypeInterface.html#method_getPathfile","()","",2],["Video::filters","FFMpeg\\Media\\Video","FFMpeg\/Media\/Video.html#method_filters","()","Returns the available filters.",2],["Video::addFilter","FFMpeg\\Media\\Video","FFMpeg\/Media\/Video.html#method_addFilter","(FilterInterface<\/abbr><\/a> $filter)","{@inheritdoc}",2],["Video::save","FFMpeg\\Media\\Video","FFMpeg\/Media\/Video.html#method_save","(FormatInterface<\/abbr><\/a> $format, string $outputPathfile)","Exports the video in the desired format, applies registered",2],["Video::frame","FFMpeg\\Media\\Video","FFMpeg\/Media\/Video.html#method_frame","(TimeCode<\/abbr><\/a> $at)","Gets the frame at timecode.",2]] - } -} -search_data['index']['longSearchIndex'] = search_data['index']['searchIndex'] \ No newline at end of file diff --git a/docs/source/API/API/stylesheet.css b/docs/source/API/API/stylesheet.css deleted file mode 100644 index f57f65a..0000000 --- a/docs/source/API/API/stylesheet.css +++ /dev/null @@ -1,212 +0,0 @@ -/* -Copyright (c) 2010, Yahoo! Inc. All rights reserved. -Code licensed under the BSD License: -http://developer.yahoo.com/yui/license.html -version: 2.8.1 -*/ -html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;}body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}select,input,button,textarea,button{font:99% arial,helvetica,clean,sans-serif;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;}body{text-align:center;}#doc,#doc2,#doc3,#doc4,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.25em;}#doc2{width:73.076em;*width:71.25em;}#doc3{margin:auto 10px;width:auto;}#doc4{width:74.923em;*width:73.05em;}.yui-b{position:relative;}.yui-b{_position:static;}#yui-main .yui-b{position:static;}#yui-main,.yui-g .yui-u .yui-g{width:100%;}.yui-t1 #yui-main,.yui-t2 #yui-main,.yui-t3 #yui-main{float:right;margin-left:-25em;}.yui-t4 #yui-main,.yui-t5 #yui-main,.yui-t6 #yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-t1 #yui-main .yui-b{margin-left:13.30769em;*margin-left:13.05em;}.yui-t2 .yui-b{float:left;width:13.8461em;*width:13.50em;}.yui-t2 #yui-main .yui-b{margin-left:14.8461em;*margin-left:14.55em;}.yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-t3 #yui-main .yui-b{margin-left:24.0769em;*margin-left:23.62em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-t4 #yui-main .yui-b{margin-right:14.8456em;*margin-right:14.55em;}.yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-t5 #yui-main .yui-b{margin-right:19.4615em;*margin-right:19.125em;}.yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-t6 #yui-main .yui-b{margin-right:24.0769em;*margin-right:23.62em;}.yui-t7 #yui-main .yui-b{display:block;margin:0 0 1em 0;}#yui-main .yui-b{float:none;width:auto;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf,.yui-gc .yui-u,.yui-gd .yui-g,.yui-g .yui-gc .yui-u,.yui-ge .yui-u,.yui-ge .yui-g,.yui-gf .yui-g,.yui-gf .yui-u{float:right;}.yui-g div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first,.yui-g .yui-gc div.first,.yui-g .yui-ge div.first,.yui-gc div.first div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf{width:49.1%;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{width:32%;margin-left:1.99%;}.yui-gb .yui-u{*margin-left:1.9%;*width:31.9%;}.yui-gc div.first,.yui-gd .yui-u{width:66%;}.yui-gd div.first{width:32%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;}.yui-ge .yui-u,.yui-gf div.first{width:24%;}.yui-g .yui-gb div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-g .yui-g .yui-u,.yui-gb .yui-g .yui-u,.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u,.yui-ge .yui-g .yui-u,.yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-g .yui-g .yui-u{width:48.1%;}.yui-g .yui-gb div.first,.yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-g .yui-gc div.first,.yui-gd .yui-g{width:66%;}.yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-gb .yui-gc div.first,.yui-gb .yui-gd div.first{*margin-right:0;}.yui-gb .yui-gb .yui-u,.yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-g .yui-gc .yui-u,.yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf .yui-u{margin:0;}.yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-gb .yui-g div.first,.yui-gb .yui-gb div.first{*margin-left:0;}.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;}.yui-gb .yui-gd div.first{width:32%;}.yui-g .yui-gd div.first{_width:29.9%;}.yui-ge .yui-g{width:24%;}.yui-gf .yui-g{width:74.2%;}.yui-gb .yui-ge div.yui-u,.yui-gb .yui-gf div.yui-u{float:right;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf div.first{float:left;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-ge div.first .yui-gd div.first{width:32%;}#hd:after,#bd:after,#ft:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after{content:".";display:block;height:0;clear:both;visibility:hidden;}#hd,#bd,#ft,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf{zoom:1;} - -strong { - font-weight: bold; -} - -em { - font-style: italic; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration:underline; -} - -body { - text-align: left; - margin: 0; - padding: 0; - background-color: #fff; - color: #000; -} - -td.last { - width: 100%; -} - -table, th, td { - border-bottom: 1px solid #ccc; - vertical-align: top; -} - -table { - margin-bottom: 20px; -} - -td { - padding: 7px 4px; -} - -td p { - padding: 0; - margin: 0; -} - -p, dl, ul, ol, h1, h2, h3, h4, h5, h6 { - margin: 5px 0; -} - -dd { - margin-left: 20px; - margin-bottom: 7px; -} - -ul, ol { - margin-left: 30px; -} - -#title { - font-size: 140%; -} - -h1 { - font-size: 130%; -} - -h2 { - font-size: 120%; - font-weight: bold; - margin: 15px 0; - background-color: #EDF3FE; - padding: 5px; -} - -h3 { - font-size: 110%; -} - -h4 { - font-weight: bold; -} - -/* page header */ - -div.header { - background-color: #EDF3FE; - border-bottom: 1px solid #ccc; - padding: 20px 30px 10px 30px; -} - -#frame div.header { - background-color: #fff; - border: 0; - padding: 10px 15px 5px 15px; -} - -/* menu */ - -div.header ul { - list-style: none; - margin: 0; - float: right; - font-size: 80%; -} - -div.header ul li { - display: inline; - font-size: 100%; - font-weight: bold; - padding: 0 4px; -} - -div.header ul li a { - color: #000; - text-transform: uppercase; -} - -#frame div.header ul { - float: none; -} - -#frame div.header ul li { - padding: 0; - padding-right: 7px; -} - -/* footer */ - -#footer { - margin: 30px; - text-align: right; - font-size: 80%; -} - -/* frames */ - -#frame .content { - margin: 10px; -} - -#frame h1 { - font-size: 120%; -} - -#frame h2 { - font-size: 100%; -} - -#frame ul { - list-style: none; - margin-left: 0; -} - -/* class */ - -div.type { - color: #aaa; - margin: 10px 0 0; -} - -div.location { - font-size: 80%; - float: right; - font-style: italic; -} - -#class h1 { - margin: 0 0 10px; -} - -#class h3 { - font-size: 100%; - margin: 15px 0; -} - -#class h3 strong { - font-size: 120%; -} - -div.details { - padding: 0 0 10px 20px; - border-bottom: 1px solid #ccc; -} - -div.tags { - clear: both; - padding-top: 15px; - font-size: 90%; -} - -td.type { - text-align: right; -} - -#class .content, #overview .content { - padding: 10px 30px; -} - -.description { - margin: 10px 0; - padding: 10px; - background-color: #efefef; -} diff --git a/docs/source/API/API/traits.html b/docs/source/API/API/traits.html deleted file mode 100644 index 9306c8f..0000000 --- a/docs/source/API/API/traits.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - Traits | PHP-FFMpeg API - - - -
- - -
PHP-FFMpeg API
- -

Traits

-
-
- -
-
- - - diff --git a/docs/source/API/API/tree.js b/docs/source/API/API/tree.js deleted file mode 100644 index 200a055..0000000 --- a/docs/source/API/API/tree.js +++ /dev/null @@ -1,86 +0,0 @@ -var tree = [["FFMpeg","FFMpeg.html","", - [["Coordinate","FFMpeg\/Coordinate.html","", - [["AspectRatio","FFMpeg\/Coordinate\/AspectRatio.html","", - [ ]],["Dimension","FFMpeg\/Coordinate\/Dimension.html","", - [ ]],["FrameRate","FFMpeg\/Coordinate\/FrameRate.html","", - [ ]],["Point","FFMpeg\/Coordinate\/Point.html","", - [ ]],["TimeCode","FFMpeg\/Coordinate\/TimeCode.html","", - [ ]] ]],["Driver","FFMpeg\/Driver.html","", - [["FFMpegDriver","FFMpeg\/Driver\/FFMpegDriver.html"," < AbstractBinary", - [ ]],["FFProbeDriver","FFMpeg\/Driver\/FFProbeDriver.html"," < AbstractBinary", - [ ]] ]],["Exception","FFMpeg\/Exception.html","", - [["ExceptionInterface","FFMpeg\/Exception\/ExceptionInterface.html","", - [ ]],["ExecutableNotFoundException","FFMpeg\/Exception\/ExecutableNotFoundException.html"," < RuntimeException", - [ ]],["InvalidArgumentException","FFMpeg\/Exception\/InvalidArgumentException.html"," < InvalidArgumentException", - [ ]],["LogicException","FFMpeg\/Exception\/LogicException.html"," < LogicException", - [ ]],["RuntimeException","FFMpeg\/Exception\/RuntimeException.html"," < RuntimeException", - [ ]] ]],["FFProbe","FFMpeg\/FFProbe.html","", - [["DataMapping","FFMpeg\/FFProbe\/DataMapping.html","", - [["AbstractData","FFMpeg\/FFProbe\/DataMapping\/AbstractData.html","", - [ ]],["Format","FFMpeg\/FFProbe\/DataMapping\/Format.html"," < AbstractData", - [ ]],["Stream","FFMpeg\/FFProbe\/DataMapping\/Stream.html"," < AbstractData", - [ ]],["StreamCollection","FFMpeg\/FFProbe\/DataMapping\/StreamCollection.html","", - [ ]] ]],["Mapper","FFMpeg\/FFProbe\/Mapper.html","", - [ ]],["MapperInterface","FFMpeg\/FFProbe\/MapperInterface.html","", - [ ]],["OptionsTester","FFMpeg\/FFProbe\/OptionsTester.html","", - [ ]],["OptionsTesterInterface","FFMpeg\/FFProbe\/OptionsTesterInterface.html","", - [ ]],["OutputParser","FFMpeg\/FFProbe\/OutputParser.html","", - [ ]],["OutputParserInterface","FFMpeg\/FFProbe\/OutputParserInterface.html","", - [ ]] ]],["Filters","FFMpeg\/Filters.html","", - [["Audio","FFMpeg\/Filters\/Audio.html","", - [["AudioFilterInterface","FFMpeg\/Filters\/Audio\/AudioFilterInterface.html","", - [ ]],["AudioFilters","FFMpeg\/Filters\/Audio\/AudioFilters.html","", - [ ]],["AudioResamplableFilter","FFMpeg\/Filters\/Audio\/AudioResamplableFilter.html","", - [ ]],["SimpleFilter","FFMpeg\/Filters\/Audio\/SimpleFilter.html","", - [ ]] ]],["Frame","FFMpeg\/Filters\/Frame.html","", - [["DisplayRatioFixerFilter","FFMpeg\/Filters\/Frame\/DisplayRatioFixerFilter.html","", - [ ]],["FrameFilterInterface","FFMpeg\/Filters\/Frame\/FrameFilterInterface.html","", - [ ]],["FrameFilters","FFMpeg\/Filters\/Frame\/FrameFilters.html","", - [ ]] ]],["Video","FFMpeg\/Filters\/Video.html","", - [["ClipFilter","FFMpeg\/Filters\/Video\/ClipFilter.html","", - [ ]],["CustomFilter","FFMpeg\/Filters\/Video\/CustomFilter.html","", - [ ]],["FrameRateFilter","FFMpeg\/Filters\/Video\/FrameRateFilter.html","", - [ ]],["ResizeFilter","FFMpeg\/Filters\/Video\/ResizeFilter.html","", - [ ]],["RotateFilter","FFMpeg\/Filters\/Video\/RotateFilter.html","", - [ ]],["SynchronizeFilter","FFMpeg\/Filters\/Video\/SynchronizeFilter.html","", - [ ]],["VideoFilterInterface","FFMpeg\/Filters\/Video\/VideoFilterInterface.html","", - [ ]],["VideoFilters","FFMpeg\/Filters\/Video\/VideoFilters.html"," < AudioFilters", - [ ]],["WatermarkFilter","FFMpeg\/Filters\/Video\/WatermarkFilter.html","", - [ ]] ]],["FilterInterface","FFMpeg\/Filters\/FilterInterface.html","", - [ ]],["FiltersCollection","FFMpeg\/Filters\/FiltersCollection.html","", - [ ]] ]],["Format","FFMpeg\/Format.html","", - [["Audio","FFMpeg\/Format\/Audio.html","", - [["Aac","FFMpeg\/Format\/Audio\/Aac.html"," < DefaultAudio", - [ ]],["DefaultAudio","FFMpeg\/Format\/Audio\/DefaultAudio.html"," < EventEmitter", - [ ]],["Flac","FFMpeg\/Format\/Audio\/Flac.html"," < DefaultAudio", - [ ]],["Mp3","FFMpeg\/Format\/Audio\/Mp3.html"," < DefaultAudio", - [ ]],["Vorbis","FFMpeg\/Format\/Audio\/Vorbis.html"," < DefaultAudio", - [ ]],["Wav","FFMpeg\/Format\/Audio\/Wav.html"," < DefaultAudio", - [ ]] ]],["ProgressListener","FFMpeg\/Format\/ProgressListener.html","", - [["AbstractProgressListener","FFMpeg\/Format\/ProgressListener\/AbstractProgressListener.html"," < EventEmitter", - [ ]],["AudioProgressListener","FFMpeg\/Format\/ProgressListener\/AudioProgressListener.html"," < AbstractProgressListener", - [ ]],["VideoProgressListener","FFMpeg\/Format\/ProgressListener\/VideoProgressListener.html"," < AbstractProgressListener", - [ ]] ]],["Video","FFMpeg\/Format\/Video.html","", - [["DefaultVideo","FFMpeg\/Format\/Video\/DefaultVideo.html"," < DefaultAudio", - [ ]],["Ogg","FFMpeg\/Format\/Video\/Ogg.html"," < DefaultVideo", - [ ]],["WMV","FFMpeg\/Format\/Video\/WMV.html"," < DefaultVideo", - [ ]],["WMV3","FFMpeg\/Format\/Video\/WMV3.html"," < DefaultVideo", - [ ]],["WebM","FFMpeg\/Format\/Video\/WebM.html"," < DefaultVideo", - [ ]],["X264","FFMpeg\/Format\/Video\/X264.html"," < DefaultVideo", - [ ]] ]],["AudioInterface","FFMpeg\/Format\/AudioInterface.html","", - [ ]],["FormatInterface","FFMpeg\/Format\/FormatInterface.html","", - [ ]],["FrameInterface","FFMpeg\/Format\/FrameInterface.html","", - [ ]],["ProgressableInterface","FFMpeg\/Format\/ProgressableInterface.html","", - [ ]],["VideoInterface","FFMpeg\/Format\/VideoInterface.html","", - [ ]] ]],["Media","FFMpeg\/Media.html","", - [["AbstractMediaType","FFMpeg\/Media\/AbstractMediaType.html","", - [ ]],["AbstractStreamableMedia","FFMpeg\/Media\/AbstractStreamableMedia.html"," < AbstractMediaType", - [ ]],["Audio","FFMpeg\/Media\/Audio.html"," < AbstractStreamableMedia", - [ ]],["Frame","FFMpeg\/Media\/Frame.html"," < AbstractMediaType", - [ ]],["MediaTypeInterface","FFMpeg\/Media\/MediaTypeInterface.html","", - [ ]],["Video","FFMpeg\/Media\/Video.html"," < Audio", - [ ]] ]],["FFMpeg","FFMpeg\/FFMpeg.html","", - [ ]],["FFMpegServiceProvider","FFMpeg\/FFMpegServiceProvider.html","", - [ ]],["FFProbe","FFMpeg\/FFProbe.html","", - [ ]] ]] ] - diff --git a/phpunit.xml.dist b/phpunit.xml.dist index feaaa7b..597f999 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,29 +1,20 @@ - + - - - tests/Unit + + tests/Alchemy/BinaryDriver - - tests/Functional + + tests/FFMpeg/Unit + + + tests/FFMpeg/Functional - src/ diff --git a/src/Alchemy/BinaryDriver/AbstractBinary.php b/src/Alchemy/BinaryDriver/AbstractBinary.php new file mode 100644 index 0000000..b5809f0 --- /dev/null +++ b/src/Alchemy/BinaryDriver/AbstractBinary.php @@ -0,0 +1,218 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +use Alchemy\BinaryDriver\Exception\ExecutableNotFoundException; +use Alchemy\BinaryDriver\Exception\ExecutionFailureException; +use Alchemy\BinaryDriver\Listeners\Listeners; +use Alchemy\BinaryDriver\Listeners\ListenerInterface; +use Evenement\EventEmitter; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; +use Symfony\Component\Process\ExecutableFinder; +use Symfony\Component\Process\Process; + +abstract class AbstractBinary extends EventEmitter implements BinaryInterface +{ + /** @var ConfigurationInterface */ + protected $configuration; + + /** @var ProcessBuilderFactoryInterface */ + protected $factory; + + /** @var ProcessRunner */ + private $processRunner; + + /** @var Listeners */ + private $listenersManager; + + public function __construct(ProcessBuilderFactoryInterface $factory, LoggerInterface $logger, ConfigurationInterface $configuration) + { + $this->factory = $factory; + $this->configuration = $configuration; + $this->processRunner = new ProcessRunner($logger, $this->getName()); + $this->listenersManager = new Listeners(); + $this->applyProcessConfiguration(); + } + + /** + * {@inheritdoc} + */ + public function listen(ListenerInterface $listener) + { + $this->listenersManager->register($listener, $this); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function unlisten(ListenerInterface $listener) + { + $this->listenersManager->unregister($listener, $this); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getConfiguration() + { + return $this->configuration; + } + + /** + * {@inheritdoc} + * + * @return BinaryInterface + */ + public function setConfiguration(ConfigurationInterface $configuration) + { + $this->configuration = $configuration; + $this->applyProcessConfiguration(); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getProcessBuilderFactory() + { + return $this->factory; + } + + /** + * {@inheritdoc} + * + * @return BinaryInterface + */ + public function setProcessBuilderFactory(ProcessBuilderFactoryInterface $factory) + { + $this->factory = $factory; + $this->applyProcessConfiguration(); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getProcessRunner() + { + return $this->processRunner; + } + + /** + * {@inheritdoc} + */ + public function setProcessRunner(ProcessRunnerInterface $runner) + { + $this->processRunner = $runner; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function command($command, $bypassErrors = false, $listeners = null) + { + if (!is_array($command)) { + $command = array($command); + } + + return $this->run($this->factory->create($command), $bypassErrors, $listeners); + } + + /** + * {@inheritdoc} + */ + public static function load($binaries, LoggerInterface $logger = null, $configuration = array()) + { + $finder = new ExecutableFinder(); + $binary = null; + $binaries = is_array($binaries) ? $binaries : array($binaries); + + foreach ($binaries as $candidate) { + if (file_exists($candidate) && is_executable($candidate)) { + $binary = $candidate; + break; + } + if (null !== $binary = $finder->find($candidate)) { + break; + } + } + + if (null === $binary) { + throw new ExecutableNotFoundException(sprintf( + 'Executable not found, proposed : %s', implode(', ', $binaries) + )); + } + + if (null === $logger) { + $logger = new NullLogger(); + } + + $configuration = $configuration instanceof ConfigurationInterface ? $configuration : new Configuration($configuration); + + return new static(new ProcessBuilderFactory($binary), $logger, $configuration); + } + + /** + * Returns the name of the driver + * + * @return string + */ + abstract public function getName(); + + /** + * Executes a process, logs events + * + * @param Process $process + * @param Boolean $bypassErrors Set to true to disable throwing ExecutionFailureExceptions + * @param ListenerInterface|array $listeners A listener or an array of listener to register for this unique run + * + * @return string The Process output + * + * @throws ExecutionFailureException in case of process failure. + */ + protected function run(Process $process, $bypassErrors = false, $listeners = null) + { + if (null !== $listeners) { + if (!is_array($listeners)) { + $listeners = array($listeners); + } + + $listenersManager = clone $this->listenersManager; + + foreach ($listeners as $listener) { + $listenersManager->register($listener, $this); + } + } else { + $listenersManager = $this->listenersManager; + } + + return $this->processRunner->run($process, $listenersManager->storage, $bypassErrors); + } + + private function applyProcessConfiguration() + { + if ($this->configuration->has('timeout')) { + $this->factory->setTimeout($this->configuration->get('timeout')); + } + + return $this; + } +} diff --git a/src/Alchemy/BinaryDriver/BinaryDriverTestCase.php b/src/Alchemy/BinaryDriver/BinaryDriverTestCase.php new file mode 100644 index 0000000..bd3cd81 --- /dev/null +++ b/src/Alchemy/BinaryDriver/BinaryDriverTestCase.php @@ -0,0 +1,77 @@ +getMockBuilder('Alchemy\BinaryDriver\ProcessBuilderFactoryInterface')->getMock(); + } + + /** + * @param integer $runs The number of runs expected + * @param Boolean $success True if the process expects to be successfull + * @param string $commandLine The commandline executed + * @param string $output The process output + * @param string $error The process error output + * + * @return Process + */ + public function createProcessMock($runs = 1, $success = true, $commandLine = null, $output = null, $error = null, $callback = false) + { + $process = $this->getMockBuilder('Symfony\Component\Process\Process') + ->disableOriginalConstructor() + ->getMock(); + + $builder = $process->expects($this->exactly($runs)) + ->method('run'); + + if (true === $callback) { + $builder->with($this->isInstanceOf('Closure')); + } + + $process->expects($this->any()) + ->method('isSuccessful') + ->will($this->returnValue($success)); + + foreach ([ + 'getOutput' => $output, + 'getErrorOutput' => $error ?: "", + 'getCommandLine' => $commandLine, + ] as $command => $value) { + $process + ->expects($this->any()) + ->method($command) + ->will($this->returnValue($value)); + } + + return $process; + } + + /** + * @return LoggerInterface + */ + public function createLoggerMock() + { + return $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); + } + + /** + * @return ConfigurationInterface + */ + public function createConfigurationMock() + { + return $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock(); + } +} diff --git a/src/Alchemy/BinaryDriver/BinaryInterface.php b/src/Alchemy/BinaryDriver/BinaryInterface.php new file mode 100644 index 0000000..0dfd6e0 --- /dev/null +++ b/src/Alchemy/BinaryDriver/BinaryInterface.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +use Alchemy\BinaryDriver\Exception\ExecutableNotFoundException; +use Alchemy\BinaryDriver\Exception\ExecutionFailureException; +use Alchemy\BinaryDriver\Listeners\ListenerInterface; +use Psr\Log\LoggerInterface; +use Evenement\EventEmitterInterface; + +interface BinaryInterface extends ConfigurationAwareInterface, ProcessBuilderFactoryAwareInterface, ProcessRunnerAwareInterface, EventEmitterInterface +{ + /** + * Adds a listener to the binary driver + * + * @param ListenerInterface $listener + * + * @return BinaryInterface + */ + public function listen(ListenerInterface $listener); + + /** + * Removes a listener from the binary driver + * + * @param ListenerInterface $listener + * + * @return BinaryInterface + */ + public function unlisten(ListenerInterface $listener); + + /** + * Runs a command against the driver. + * + * Calling this method on a `ls` driver with the command `-a` would run `ls -a`. + * + * @param array|string $command A command or an array of command + * @param Boolean $bypassErrors If set to true, an erronous process will not throw an exception + * @param ListenerInterface|array $listeners A listener or an array of listeners to register for this unique run + * + * @return string The command output + * + * @throws ExecutionFailureException in case of process failure. + */ + public function command($command, $bypassErrors = false, $listeners = null); + + /** + * Loads a binary + * + * @param string|array $binaries A binary name or an array of binary names + * @param null|LoggerInterface $logger A Logger + * @param array|ConfigurationInterface $configuration The configuration + * + * @throws ExecutableNotFoundException In case none of the binaries were found + * + * @return BinaryInterface + */ + public static function load($binaries, LoggerInterface $logger = null, $configuration = array()); +} diff --git a/src/Alchemy/BinaryDriver/Configuration.php b/src/Alchemy/BinaryDriver/Configuration.php new file mode 100644 index 0000000..747195b --- /dev/null +++ b/src/Alchemy/BinaryDriver/Configuration.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +use Traversable; + +class Configuration implements ConfigurationInterface +{ + private $data; + + public function __construct(array $data = []) + { + $this->data = $data; + } + + /** + * {@inheritdoc} + */ + public function getIterator(): Traversable + { + return new \ArrayIterator($this->data); + } + + /** + * {@inheritdoc} + */ + public function get($key, $default = null) + { + return isset($this->data[$key]) ? $this->data[$key] : $default; + } + + /** + * {@inheritdoc} + */ + public function set($key, $value) + { + $this->data[$key] = $value; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function has($key) + { + return array_key_exists($key, $this->data); + } + + /** + * {@inheritdoc} + */ + public function remove($key) + { + $value = $this->get($key); + unset($this->data[$key]); + + return $value; + } + + /** + * {@inheritdoc} + */ + public function all() + { + return $this->data; + } + + /** + * {@inheritdoc} + */ + public function offsetExists($offset): bool + { + return $this->has($offset); + } + + /** + * {@inheritdoc} + */ + public function offsetGet($offset): mixed + { + return $this->get($offset); + } + + /** + * {@inheritdoc} + */ + public function offsetSet($offset, $value): void + { + $this->set($offset, $value); + } + + /** + * {@inheritdoc} + */ + public function offsetUnset($offset): void + { + $this->remove($offset); + } +} diff --git a/src/Alchemy/BinaryDriver/ConfigurationAwareInterface.php b/src/Alchemy/BinaryDriver/ConfigurationAwareInterface.php new file mode 100644 index 0000000..3b14f9e --- /dev/null +++ b/src/Alchemy/BinaryDriver/ConfigurationAwareInterface.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +interface ConfigurationAwareInterface +{ + /** + * Returns the configuration + * + * @return ConfigurationInterface + */ + public function getConfiguration(); + + /** + * Set the configuration + * + * @param ConfigurationInterface $configuration + */ + public function setConfiguration(ConfigurationInterface $configuration); +} diff --git a/src/Alchemy/BinaryDriver/ConfigurationInterface.php b/src/Alchemy/BinaryDriver/ConfigurationInterface.php new file mode 100644 index 0000000..71bcb88 --- /dev/null +++ b/src/Alchemy/BinaryDriver/ConfigurationInterface.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +interface ConfigurationInterface extends \ArrayAccess, \IteratorAggregate +{ + /** + * Returns the value given a key from configuration + * + * @param string $key + * @param mixed $default The default value in case the key does not exist + * + * @return mixed + */ + public function get($key, $default = null); + + /** + * Set a value to configuration + * + * @param string $key The key + * @param mixed $value The value corresponding to the key + */ + public function set($key, $value); + + /** + * Tells if Configuration contains `$key` + * + * @param string $key + * + * @return Boolean + */ + public function has($key); + + /** + * Removes a value given a key + * + * @param string $key + * + * @return mixed The previous value + */ + public function remove($key); + + /** + * Returns all values set in the configuration + * + * @return array + */ + public function all(); +} diff --git a/src/Alchemy/BinaryDriver/Exception/ExceptionInterface.php b/src/Alchemy/BinaryDriver/Exception/ExceptionInterface.php new file mode 100644 index 0000000..aaa1e32 --- /dev/null +++ b/src/Alchemy/BinaryDriver/Exception/ExceptionInterface.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver\Exception; + +interface ExceptionInterface +{ +} diff --git a/src/Alchemy/BinaryDriver/Exception/ExecutableNotFoundException.php b/src/Alchemy/BinaryDriver/Exception/ExecutableNotFoundException.php new file mode 100644 index 0000000..6f267ea --- /dev/null +++ b/src/Alchemy/BinaryDriver/Exception/ExecutableNotFoundException.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver\Exception; + +class ExecutableNotFoundException extends \RuntimeException implements ExceptionInterface +{ +} diff --git a/src/Alchemy/BinaryDriver/Exception/ExecutionFailureException.php b/src/Alchemy/BinaryDriver/Exception/ExecutionFailureException.php new file mode 100644 index 0000000..1b557d1 --- /dev/null +++ b/src/Alchemy/BinaryDriver/Exception/ExecutionFailureException.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver\Exception; + +class ExecutionFailureException extends \RuntimeException implements ExceptionInterface +{ + /** @var string */ + protected $command; + + /** @var string */ + protected $errorOutput; + + public function __construct($binaryName, $command, $errorOutput = null, $code = 0, $previous = null) + { + $message = sprintf("%s failed to execute command %s:\n\nError Output:\n\n %s", $binaryName, $command, $errorOutput); + parent::__construct($message, $code, $previous); + $this->command = $command; + $this->errorOutput = $errorOutput; + } + + public function getCommand(){ + return $this->command; + } + + public function getErrorOutput(){ + return $this->errorOutput; + } +} diff --git a/src/Alchemy/BinaryDriver/Exception/InvalidArgumentException.php b/src/Alchemy/BinaryDriver/Exception/InvalidArgumentException.php new file mode 100644 index 0000000..4e9cfe4 --- /dev/null +++ b/src/Alchemy/BinaryDriver/Exception/InvalidArgumentException.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver\Exception; + +class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface +{ +} diff --git a/src/Alchemy/BinaryDriver/Listeners/DebugListener.php b/src/Alchemy/BinaryDriver/Listeners/DebugListener.php new file mode 100644 index 0000000..20773b0 --- /dev/null +++ b/src/Alchemy/BinaryDriver/Listeners/DebugListener.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver\Listeners; + +use Evenement\EventEmitter; +use Symfony\Component\Process\Process; + +class DebugListener extends EventEmitter implements ListenerInterface +{ + private $prefixOut; + private $prefixErr; + private $eventOut; + private $eventErr; + + public function __construct($prefixOut = '[OUT] ', $prefixErr = '[ERROR] ', $eventOut = 'debug', $eventErr = 'debug') + { + $this->prefixOut = $prefixOut; + $this->prefixErr = $prefixErr; + $this->eventOut = $eventOut; + $this->eventErr = $eventErr; + } + + /** + * {@inheritdoc} + */ + public function handle($type, $data) + { + if (Process::ERR === $type) { + $this->emitLines($this->eventErr, $this->prefixErr, $data); + } elseif (Process::OUT === $type) { + $this->emitLines($this->eventOut, $this->prefixOut, $data); + } + } + + /** + * {@inheritdoc} + */ + public function forwardedEvents() + { + return array_unique(array($this->eventErr, $this->eventOut)); + } + + private function emitLines($event, $prefix, $lines) + { + foreach (explode("\n", $lines) as $line) { + $this->emit($event, array($prefix . $line)); + } + } +} diff --git a/src/Alchemy/BinaryDriver/Listeners/ListenerInterface.php b/src/Alchemy/BinaryDriver/Listeners/ListenerInterface.php new file mode 100644 index 0000000..920a6d5 --- /dev/null +++ b/src/Alchemy/BinaryDriver/Listeners/ListenerInterface.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver\Listeners; + +use Evenement\EventEmitterInterface; + +interface ListenerInterface extends EventEmitterInterface +{ + /** + * Handle the output of a ProcessRunner + * + * @param string $type The data type, one of Process::ERR, Process::OUT constants + * @param string $data The output + */ + public function handle($type, $data); + + /** + * An array of events that should be forwarded to BinaryInterface + * + * @return array + */ + public function forwardedEvents(); +} diff --git a/src/Alchemy/BinaryDriver/Listeners/Listeners.php b/src/Alchemy/BinaryDriver/Listeners/Listeners.php new file mode 100644 index 0000000..afb7549 --- /dev/null +++ b/src/Alchemy/BinaryDriver/Listeners/Listeners.php @@ -0,0 +1,88 @@ +storage = new SplObjectStorage(); + } + + public function __clone() + { + $storage = $this->storage; + $this->storage = new SplObjectStorage(); + $this->storage->addAll($storage); + } + + /** + * Registers a listener, pass the listener events to the target. + * + * @param ListenerInterface $listener + * @param null|EventEmitter $target + * + * @return ListenersInterface + */ + public function register(ListenerInterface $listener, EventEmitter $target = null) + { + $EElisteners = array(); + + if (null !== $target) { + $EElisteners = $this->forwardEvents($listener, $target, $listener->forwardedEvents()); + } + + $this->storage->attach($listener, $EElisteners); + + return $this; + } + + /** + * Unregisters a listener, removes the listener events from the target. + * + * @param ListenerInterface $listener + * + * @return ListenersInterface + * + * @throws InvalidArgumentException In case the listener is not registered + */ + public function unregister(ListenerInterface $listener) + { + if (!isset($this->storage[$listener])) { + throw new InvalidArgumentException('Listener is not registered.'); + } + + foreach ($this->storage[$listener] as $event => $EElistener) { + $listener->removeListener($event, $EElistener); + } + + $this->storage->detach($listener); + + return $this; + } + + private function forwardEvents($source, $target, array $events) + { + $EElisteners = array(); + + foreach ($events as $event) { + $listener = $this->createListener($event, $target); + $source->on($event, $EElisteners[$event] = $listener); + } + + return $EElisteners; + } + + private function createListener($event, $target) + { + return function () use ($event, $target) { + $target->emit($event, func_get_args()); + }; + } +} diff --git a/src/Alchemy/BinaryDriver/ProcessBuilderFactory.php b/src/Alchemy/BinaryDriver/ProcessBuilderFactory.php new file mode 100644 index 0000000..b25ba3c --- /dev/null +++ b/src/Alchemy/BinaryDriver/ProcessBuilderFactory.php @@ -0,0 +1,186 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +use Alchemy\BinaryDriver\Exception\InvalidArgumentException; +use Symfony\Component\Process\Process; +use Symfony\Component\Process\ProcessBuilder; + +class ProcessBuilderFactory implements ProcessBuilderFactoryInterface +{ + /** + * The binary path + * + * @var String + */ + protected $binary; + + /** + * The timeout for the generated processes + * + * @var integer|float + */ + private $timeout; + + /** + * An internal ProcessBuilder. + * + * Note that this one is used only if Symfony ProcessBuilder has method + * setPrefix (2.3) + * + * @var ProcessBuilder + */ + private $builder; + + /** + * Tells whether Symfony LTS ProcessBuilder should be emulated or not. + * + * This symfony version provided a brand new ::setPrefix method. + * + * @var Boolean + */ + public static $emulateSfLTS; + + /** + * Constructor + * + * @param String $binary The path to the binary + * + * @throws InvalidArgumentException In case binary path is invalid + */ + public function __construct($binary) + { + $this->detectEmulation(); + + if (!self::$emulateSfLTS) { + $this->builder = new ProcessBuilder(); + } + + $this->useBinary($binary); + } + + /** + * Covenient method for unit testing + * + * @return type + */ + public function getBuilder() + { + return $this->builder; + } + + /** + * Covenient method for unit testing + * + * @param ProcessBuilder $builder + * @return ProcessBuilderFactory + */ + public function setBuilder(ProcessBuilder $builder) + { + $this->builder = $builder; + + return $this; + } + + /** + * @inheritdoc + */ + public function getBinary() + { + return $this->binary; + } + + /** + * @inheritdoc + */ + public function useBinary($binary) + { + if (!is_executable($binary)) { + throw new InvalidArgumentException(sprintf('`%s` is not an executable binary', $binary)); + } + + $this->binary = $binary; + + if (!static::$emulateSfLTS) { + $this->builder->setPrefix($binary); + } + + return $this; + } + + /** + * @inheritdoc + */ + public function setTimeout($timeout) + { + $this->timeout = $timeout; + + if (!static::$emulateSfLTS) { + $this->builder->setTimeout($this->timeout); + } + + return $this; + } + + /** + * @inheritdoc + */ + public function getTimeout() + { + return $this->timeout; + } + + /** + * @inheritdoc + */ + public function create($arguments = array()) + { + if (null === $this->binary) { + throw new InvalidArgumentException('No binary set'); + } + + if (!is_array($arguments)) { + $arguments = array($arguments); + } + + if (static::$emulateSfLTS) { + array_unshift($arguments, $this->binary); + if (method_exists('Symfony\Component\Process\ProcessUtils', 'escapeArgument')) { + $script = implode(' ', array_map(array('Symfony\Component\Process\ProcessUtils', 'escapeArgument'), $arguments)); + } else { + $script = $arguments; + } + + $env = array_replace($_ENV, $_SERVER); + $env = array_filter($env, function ($value) { + return !is_array($value); + }); + + return new Process($script, null, $env, null, $this->timeout); + } else { + return $this->builder + ->setArguments($arguments) + ->getProcess(); + } + } + + private function detectEmulation() + { + if (null !== static::$emulateSfLTS) { + return $this; + } + + static::$emulateSfLTS = !method_exists('Symfony\Component\Process\ProcessBuilder', 'setPrefix'); + + return $this; + } +} diff --git a/src/Alchemy/BinaryDriver/ProcessBuilderFactoryAwareInterface.php b/src/Alchemy/BinaryDriver/ProcessBuilderFactoryAwareInterface.php new file mode 100644 index 0000000..1398bb4 --- /dev/null +++ b/src/Alchemy/BinaryDriver/ProcessBuilderFactoryAwareInterface.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +interface ProcessBuilderFactoryAwareInterface +{ + /** + * Returns the current process builder factory + * + * @return ProcessBuilderFactoryInterface + */ + public function getProcessBuilderFactory(); + + /** + * Set a process builder factory + * + * @param ProcessBuilderFactoryInterface $factory + */ + public function setProcessBuilderFactory(ProcessBuilderFactoryInterface $factory); +} diff --git a/src/Alchemy/BinaryDriver/ProcessBuilderFactoryInterface.php b/src/Alchemy/BinaryDriver/ProcessBuilderFactoryInterface.php new file mode 100644 index 0000000..05a2296 --- /dev/null +++ b/src/Alchemy/BinaryDriver/ProcessBuilderFactoryInterface.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 Alchemy\BinaryDriver; + +use Alchemy\BinaryDriver\Exception\InvalidArgumentException; +use Symfony\Component\Process\Process; + +interface ProcessBuilderFactoryInterface +{ + /** + * Returns a new instance of Symfony Process + * + * @param string|array $arguments An argument or an array of arguments + * + * @return Process + * + * @throws InvalidArgumentException + */ + public function create($arguments = array()); + + /** + * Returns the path to the binary that is used + * + * @return String + */ + public function getBinary(); + + /** + * Sets the path to the binary + * + * @param String $binary A path to a binary + * + * @return ProcessBuilderFactoryInterface + * + * @throws InvalidArgumentException In case binary is not executable + */ + public function useBinary($binary); + + /** + * Set the default timeout to apply on created processes. + * + * @param integer|float $timeout + * + * @return ProcessBuilderFactoryInterface + * + * @throws InvalidArgumentException In case the timeout is not valid + */ + public function setTimeout($timeout); + + /** + * Returns the current timeout applied to the created processes. + * + * @return integer|float + */ + public function getTimeout(); +} diff --git a/src/Alchemy/BinaryDriver/ProcessRunner.php b/src/Alchemy/BinaryDriver/ProcessRunner.php new file mode 100644 index 0000000..57ed987 --- /dev/null +++ b/src/Alchemy/BinaryDriver/ProcessRunner.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +use Alchemy\BinaryDriver\Exception\ExecutionFailureException; +use Psr\Log\LoggerInterface; +use SplObjectStorage; +use Symfony\Component\Process\Exception\RuntimeException; +use Symfony\Component\Process\Process; + +class ProcessRunner implements ProcessRunnerInterface +{ + /** @var LoggerInterface */ + private $logger; + + /** @var string */ + private $name; + + public function __construct(LoggerInterface $logger, $name) + { + $this->logger = $logger; + $this->name = $name; + } + + /** + * {@inheritdoc} + * + * @return void + */ + public function setLogger(LoggerInterface $logger): void + { + $this->logger = $logger; + } + + /** + * @return LoggerInterface + */ + public function getLogger() + { + return $this->logger; + } + + /** + * {@inheritdoc} + */ + public function run(Process $process, SplObjectStorage $listeners, $bypassErrors) + { + $this->logger->info(sprintf( + '%s running command %s', + $this->name, + $process->getCommandLine() + )); + + try { + $process->run($this->buildCallback($listeners)); + } catch (RuntimeException $e) { + if (!$bypassErrors) { + $this->doExecutionFailure($process->getCommandLine(), $process->getErrorOutput(), $e); + } + } + + if (!$bypassErrors && !$process->isSuccessful()) { + $this->doExecutionFailure($process->getCommandLine(), $process->getErrorOutput()); + } elseif (!$process->isSuccessful()) { + $this->logger->error($this->createErrorMessage($process->getCommandLine(), $process->getErrorOutput())); + return; + } else { + $this->logger->info(sprintf('%s executed command successfully', $this->name)); + return $process->getOutput(); + } + } + + private function buildCallback(SplObjectStorage $listeners) + { + return function ($type, $data) use ($listeners) { + foreach ($listeners as $listener) { + $listener->handle($type, $data); + } + }; + } + + private function doExecutionFailure($command, $errorOutput, \Exception $e = null) + { + $this->logger->error($this->createErrorMessage($command, $errorOutput)); + throw new ExecutionFailureException( + $this->name, + $command, + $errorOutput, + $e ? $e->getCode() : 0, + $e ?: null + ); + } + + private function createErrorMessage($command, $errorOutput) + { + return sprintf('%s failed to execute command %s: %s', $this->name, $command, $errorOutput); + } +} diff --git a/src/Alchemy/BinaryDriver/ProcessRunnerAwareInterface.php b/src/Alchemy/BinaryDriver/ProcessRunnerAwareInterface.php new file mode 100644 index 0000000..807c33e --- /dev/null +++ b/src/Alchemy/BinaryDriver/ProcessRunnerAwareInterface.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +interface ProcessRunnerAwareInterface +{ + /** + * Returns the current process runner + * + * @return ProcessRunnerInterface + */ + public function getProcessRunner(); + + /** + * Sets a process runner + * + * @param ProcessRunnerInterface $runner + */ + public function setProcessRunner(ProcessRunnerInterface $runner); +} diff --git a/src/Alchemy/BinaryDriver/ProcessRunnerInterface.php b/src/Alchemy/BinaryDriver/ProcessRunnerInterface.php new file mode 100644 index 0000000..6605404 --- /dev/null +++ b/src/Alchemy/BinaryDriver/ProcessRunnerInterface.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Alchemy\BinaryDriver; + +use Alchemy\BinaryDriver\Exception\ExecutionFailureException; +use Psr\Log\LoggerAwareInterface; +use SplObjectStorage; +use Symfony\Component\Process\Process; + +interface ProcessRunnerInterface extends LoggerAwareInterface +{ + /** + * Executes a process, logs events + * + * @param Process $process + * @param SplObjectStorage $listeners Some listeners + * @param Boolean $bypassErrors Set to true to disable throwing ExecutionFailureExceptions + * + * @return string The Process output + * + * @throws ExecutionFailureException in case of process failure. + */ + public function run(Process $process, SplObjectStorage $listeners, $bypassErrors); +} diff --git a/src/FFMpeg/Coordinate/AspectRatio.php b/src/FFMpeg/Coordinate/AspectRatio.php index a3c88a8..6e42f5e 100644 --- a/src/FFMpeg/Coordinate/AspectRatio.php +++ b/src/FFMpeg/Coordinate/AspectRatio.php @@ -17,49 +17,49 @@ use FFMpeg\Exception\InvalidArgumentException; class AspectRatio { // named 4:3 or 1.33:1 Traditional TV - const AR_4_3 = '4/3'; + public const AR_4_3 = '4/3'; // named 16:9 or 1.77:1 HD video standard - const AR_16_9 = '16/9'; - + public const AR_16_9 = '16/9'; + // named 8:5 or 16:10 or 1.6:1 - const AR_8_5 = '8/5'; + public const AR_8_5 = '8/5'; // named 25:16 or 1.56:1 - const AR_25_16 = '25/16'; + public const AR_25_16 = '25/16'; // named 3:2 or 1.5:1 see http://en.wikipedia.org/wiki/135_film - const AR_3_2 = '3/2'; + public const AR_3_2 = '3/2'; // named 5:3 or 1.66:1 see http://en.wikipedia.org/wiki/Super_16_mm - const AR_5_3 = '5/3'; + public const AR_5_3 = '5/3'; // mostly used in Photography - const AR_5_4 = '5/4'; - const AR_1_1 = '1/1'; + public const AR_5_4 = '5/4'; + public const AR_1_1 = '1/1'; // 1.85:1 US widescreen cinema standard see http://en.wikipedia.org/wiki/Widescreen#Film - const AR_1_DOT_85_1 = '1.85:1'; + public const AR_1_DOT_85_1 = '1.85:1'; // 2.39:1 or 2.40:1 Current widescreen cinema standard see http://en.wikipedia.org/wiki/Anamorphic_format - const AR_2_DOT_39_1 = '2.39:1'; + public const AR_2_DOT_39_1 = '2.39:1'; // Rotated constants // Rotated 4:3 - const AR_ROTATED_3_4 = '3/4'; + public const AR_ROTATED_3_4 = '3/4'; // Rotated 16:9 - const AR_ROTATED_9_16 = '9/16'; + public const AR_ROTATED_9_16 = '9/16'; // Rotated 3:2 - const AR_ROTATED_2_3 = '2/3'; + public const AR_ROTATED_2_3 = '2/3'; // Rotated 5:3 - const AR_ROTATED_3_5 = '3/5'; + public const AR_ROTATED_3_5 = '3/5'; // Rotated 5:4 - const AR_ROTATED_4_5 = '4/5'; + public const AR_ROTATED_4_5 = '4/5'; // Rotated 1.85 - const AR_ROTATED_1_DOT_85 = '1/1.85'; + public const AR_ROTATED_1_DOT_85 = '1/1.85'; // Rotated 2.39 - const AR_ROTATED_2_DOT_39 = '1/2.39'; + public const AR_ROTATED_2_DOT_39 = '1/2.39'; /** @var float */ private $ratio; @@ -82,10 +82,10 @@ class AspectRatio /** * Computes the best width for given height and modulus. * - * @param Integer $height - * @param Integer $modulus + * @param int $height + * @param int $modulus * - * @return Integer + * @return int */ public function calculateWidth($height, $modulus = 1) { @@ -101,10 +101,10 @@ class AspectRatio /** * Computes the best height for given width and modulus. * - * @param Integer $width - * @param Integer $modulus + * @param int $width + * @param int $modulus * - * @return Integer + * @return int */ public function calculateHeight($width, $modulus = 1) { @@ -120,7 +120,7 @@ class AspectRatio private function getMultipleUp($value, $multiple) { while (0 !== $value % $multiple) { - $value++; + ++$value; } return $value; @@ -129,7 +129,7 @@ class AspectRatio private function getMultipleDown($value, $multiple) { while (0 !== $value % $multiple) { - $value--; + --$value; } return $value; @@ -141,8 +141,7 @@ class AspectRatio * The strategy parameter forces by default to use standardized ratios. If * custom ratio need to be used, disable it. * - * @param Dimension $dimension - * @param bool $forceStandards Whether to force or not standard ratios + * @param bool $forceStandards Whether to force or not standard ratios * * @return AspectRatio * @@ -214,7 +213,7 @@ class AspectRatio private static function nearestStrategy($incoming) { - $availables = array( + $availables = [ static::AR_4_3 => static::valueFromName(static::AR_4_3), static::AR_16_9 => static::valueFromName(static::AR_16_9), static::AR_8_5 => static::valueFromName(static::AR_8_5), @@ -234,7 +233,7 @@ class AspectRatio static::AR_ROTATED_3_4 => static::valueFromName(static::AR_ROTATED_3_4), static::AR_ROTATED_1_DOT_85 => static::valueFromName(static::AR_ROTATED_1_DOT_85), static::AR_ROTATED_2_DOT_39 => static::valueFromName(static::AR_ROTATED_2_DOT_39), - ); + ]; asort($availables); $previous = $current = null; diff --git a/src/FFMpeg/Coordinate/Dimension.php b/src/FFMpeg/Coordinate/Dimension.php index 5b53415..8a62b2a 100644 --- a/src/FFMpeg/Coordinate/Dimension.php +++ b/src/FFMpeg/Coordinate/Dimension.php @@ -14,7 +14,7 @@ namespace FFMpeg\Coordinate; use FFMpeg\Exception\InvalidArgumentException; /** - * Dimension object, used for manipulating width and height couples + * Dimension object, used for manipulating width and height couples. */ class Dimension { diff --git a/src/FFMpeg/Coordinate/Point.php b/src/FFMpeg/Coordinate/Point.php index 1758e22..380c0f9 100644 --- a/src/FFMpeg/Coordinate/Point.php +++ b/src/FFMpeg/Coordinate/Point.php @@ -22,8 +22,8 @@ class Point $this->x = $x; $this->y = $y; } else { - $this->x = (int)$x; - $this->y = (int)$y; + $this->x = (int) $x; + $this->y = (int) $y; } } diff --git a/src/FFMpeg/Coordinate/TimeCode.php b/src/FFMpeg/Coordinate/TimeCode.php index b65a525..0d80d8c 100644 --- a/src/FFMpeg/Coordinate/TimeCode.php +++ b/src/FFMpeg/Coordinate/TimeCode.php @@ -91,10 +91,12 @@ class TimeCode } /** - * Returns this timecode in seconds + * Returns this timecode in seconds. + * * @return int */ - public function toSeconds() { + public function toSeconds() + { $seconds = 0; $seconds += $this->hours * 60 * 60; @@ -107,14 +109,15 @@ class TimeCode } /** - * Helper function wether `$timecode` is after this one + * Helper function wether `$timecode` is after this one. + * + * @param TimeCode $timecode The Timecode to compare * - * @param TimeCode $timecode The Timecode to compare * @return bool */ - public function isAfter(TimeCode $timecode) { + public function isAfter(TimeCode $timecode) + { // convert everything to seconds and compare - return ($this->toSeconds() > $timecode->toSeconds()); + return $this->toSeconds() > $timecode->toSeconds(); } - } diff --git a/src/FFMpeg/Driver/FFMpegDriver.php b/src/FFMpeg/Driver/FFMpegDriver.php index a0de7be..4ae30ed 100644 --- a/src/FFMpeg/Driver/FFMpegDriver.php +++ b/src/FFMpeg/Driver/FFMpegDriver.php @@ -37,13 +37,13 @@ class FFMpegDriver extends AbstractBinary * * @return FFMpegDriver */ - public static function create(LoggerInterface $logger = null, $configuration = array()) + public static function create(LoggerInterface $logger = null, $configuration = []) { if (!$configuration instanceof ConfigurationInterface) { $configuration = new Configuration($configuration); } - $binaries = $configuration->get('ffmpeg.binaries', array('avconv', 'ffmpeg')); + $binaries = $configuration->get('ffmpeg.binaries', ['avconv', 'ffmpeg']); if (!$configuration->has('timeout')) { $configuration->set('timeout', 300); @@ -60,6 +60,7 @@ class FFMpegDriver extends AbstractBinary * Get ffmpeg version. * * @return string + * * @throws RuntimeException */ public function getVersion() diff --git a/src/FFMpeg/Driver/FFProbeDriver.php b/src/FFMpeg/Driver/FFProbeDriver.php index 4063611..eb35807 100644 --- a/src/FFMpeg/Driver/FFProbeDriver.php +++ b/src/FFMpeg/Driver/FFProbeDriver.php @@ -42,7 +42,7 @@ class FFProbeDriver extends AbstractBinary $configuration = new Configuration($configuration); } - $binaries = $configuration->get('ffprobe.binaries', array('avprobe', 'ffprobe')); + $binaries = $configuration->get('ffprobe.binaries', ['avprobe', 'ffprobe']); try { return static::load($binaries, $logger, $configuration); diff --git a/src/FFMpeg/FFMpeg.php b/src/FFMpeg/FFMpeg.php index 16a7ff1..f919a61 100644 --- a/src/FFMpeg/FFMpeg.php +++ b/src/FFMpeg/FFMpeg.php @@ -15,8 +15,8 @@ use Alchemy\BinaryDriver\ConfigurationInterface; use FFMpeg\Driver\FFMpegDriver; use FFMpeg\Exception\InvalidArgumentException; use FFMpeg\Exception\RuntimeException; -use FFMpeg\Media\Audio; use FFMpeg\Media\AdvancedMedia; +use FFMpeg\Media\Audio; use FFMpeg\Media\Video; use Psr\Log\LoggerInterface; @@ -60,8 +60,6 @@ class FFMpeg /** * Sets the ffmpeg driver. * - * @param FFMpegDriver $ffmpeg - * * @return FFMpeg */ public function setFFMpegDriver(FFMpegDriver $ffmpeg) @@ -108,7 +106,7 @@ class FFMpeg /** * Opens multiple input sources. * - * @param string[] $inputs Array of files to be opened. + * @param string[] $inputs array of files to be opened * * @return AdvancedMedia */ @@ -126,7 +124,7 @@ class FFMpeg * * @return FFMpeg */ - public static function create($configuration = array(), LoggerInterface $logger = null, FFProbe $probe = null) + public static function create($configuration = [], LoggerInterface $logger = null, FFProbe $probe = null) { if (null === $probe) { $probe = FFProbe::create($configuration, $logger, null); diff --git a/src/FFMpeg/FFMpegServiceProvider.php b/src/FFMpeg/FFMpegServiceProvider.php deleted file mode 100644 index 05d34e4..0000000 --- a/src/FFMpeg/FFMpegServiceProvider.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace FFMpeg; - -use Silex\Application; -use Silex\ServiceProviderInterface; -use Symfony\Component\Cache\Adapter\ArrayAdapter; - -/** - * @deprecated - */ -class FFMpegServiceProvider implements ServiceProviderInterface -{ - public function register(Application $app) - { - $app['ffmpeg.configuration'] = array(); - $app['ffmpeg.default.configuration'] = array( - 'ffmpeg.threads' => 4, - 'ffmpeg.timeout' => 300, - 'ffmpeg.binaries' => array('avconv', 'ffmpeg'), - 'ffprobe.timeout' => 30, - 'ffprobe.binaries' => array('avprobe', 'ffprobe'), - ); - $app['ffmpeg.logger'] = null; - - $app['ffmpeg.configuration.build'] = $app->share(function (Application $app) { - return array_replace($app['ffmpeg.default.configuration'], $app['ffmpeg.configuration']); - }); - - $app['ffmpeg'] = $app['ffmpeg.ffmpeg'] = $app->share(function (Application $app) { - $configuration = $app['ffmpeg.configuration.build']; - - if (isset($configuration['ffmpeg.timeout'])) { - $configuration['timeout'] = $configuration['ffmpeg.timeout']; - } - - return FFMpeg::create($configuration, $app['ffmpeg.logger'], $app['ffmpeg.ffprobe']); - }); - - $app['ffprobe.cache'] = $app->share(function () { - return new ArrayAdapter; - }); - - $app['ffmpeg.ffprobe'] = $app->share(function (Application $app) { - $configuration = $app['ffmpeg.configuration.build']; - - if (isset($configuration['ffmpeg.timeout'])) { - $configuration['timeout'] = $configuration['ffprobe.timeout']; - } - - return FFProbe::create($configuration, $app['ffmpeg.logger'], $app['ffprobe.cache']); - }); - } - - public function boot(Application $app) - { - } -} diff --git a/src/FFMpeg/FFProbe.php b/src/FFMpeg/FFProbe.php index 8eb7c66..07271f7 100644 --- a/src/FFMpeg/FFProbe.php +++ b/src/FFMpeg/FFProbe.php @@ -30,8 +30,8 @@ use Symfony\Component\Cache\Adapter\ArrayAdapter; class FFProbe { - const TYPE_STREAMS = 'streams'; - const TYPE_FORMAT = 'format'; + public const TYPE_STREAMS = 'streams'; + public const TYPE_FORMAT = 'format'; /** @var CacheItemPoolInterface */ private $cache; @@ -46,11 +46,11 @@ class FFProbe public function __construct(FFProbeDriver $ffprobe, CacheItemPoolInterface $cache) { - $this->ffprobe = $ffprobe; + $this->ffprobe = $ffprobe; $this->optionsTester = new OptionsTester($ffprobe, $cache); - $this->parser = new OutputParser(); - $this->mapper = new Mapper(); - $this->cache = $cache; + $this->parser = new OutputParser(); + $this->mapper = new Mapper(); + $this->cache = $cache; } /** @@ -62,8 +62,6 @@ class FFProbe } /** - * @param OutputParserInterface $parser - * * @return FFProbe */ public function setParser(OutputParserInterface $parser) @@ -82,8 +80,6 @@ class FFProbe } /** - * @param FFProbeDriver $ffprobe - * * @return FFProbe */ public function setFFProbeDriver(FFProbeDriver $ffprobe) @@ -94,8 +90,6 @@ class FFProbe } /** - * @param OptionsTesterInterface $tester - * * @return FFProbe */ public function setOptionsTester(OptionsTesterInterface $tester) @@ -142,8 +136,6 @@ class FFProbe } /** - * @param MapperInterface $mapper - * * @return FFProbe */ public function setMapper(MapperInterface $mapper) @@ -176,14 +168,16 @@ class FFProbe * Checks wether the given `$pathfile` is considered a valid media file. * * @param string $pathfile + * * @return bool + * * @since 0.10.0 */ public function isValid($pathfile) { try { return $this->format($pathfile)->get('duration') > 0; - } catch(\Exception $e) { + } catch (\Exception $e) { // complete invalid data return false; } @@ -217,7 +211,7 @@ class FFProbe * * @return FFProbe */ - public static function create($configuration = array(), LoggerInterface $logger = null, CacheItemPoolInterface $cache = null) + public static function create($configuration = [], LoggerInterface $logger = null, CacheItemPoolInterface $cache = null) { if (null === $cache) { $cache = new ArrayAdapter(); @@ -235,13 +229,10 @@ class FFProbe } if (!$this->optionsTester->has($command)) { - throw new RuntimeException(sprintf( - 'This version of ffprobe is too old and ' - . 'does not support `%s` option, please upgrade', $command - )); + throw new RuntimeException(sprintf('This version of ffprobe is too old and ' . 'does not support `%s` option, please upgrade', $command)); } - $commands = array($pathfile, $command); + $commands = [$pathfile, $command]; $parseIsToDo = false; diff --git a/src/FFMpeg/FFProbe/DataMapping/AbstractData.php b/src/FFMpeg/FFProbe/DataMapping/AbstractData.php index e830c8e..c4e9a18 100644 --- a/src/FFMpeg/FFProbe/DataMapping/AbstractData.php +++ b/src/FFMpeg/FFProbe/DataMapping/AbstractData.php @@ -23,7 +23,8 @@ abstract class AbstractData implements \Countable /** * Returns true if data has property. * - * @param string $property + * @param string $property + * * @return bool */ public function has($property) @@ -34,8 +35,8 @@ abstract class AbstractData implements \Countable /** * Returns the property value given its name. * - * @param string $property - * @param mixed $default + * @param string $property + * @param mixed $default * * @return mixed */ @@ -86,8 +87,7 @@ abstract class AbstractData implements \Countable /** * {@inheritdoc} */ - #[\ReturnTypeWillChange] - public function count() + public function count(): int { return count($this->properties); } diff --git a/src/FFMpeg/FFProbe/DataMapping/Stream.php b/src/FFMpeg/FFProbe/DataMapping/Stream.php index 68c313b..8699872 100644 --- a/src/FFMpeg/FFProbe/DataMapping/Stream.php +++ b/src/FFMpeg/FFProbe/DataMapping/Stream.php @@ -11,9 +11,9 @@ namespace FFMpeg\FFProbe\DataMapping; +use FFMpeg\Coordinate\Dimension; use FFMpeg\Exception\LogicException; use FFMpeg\Exception\RuntimeException; -use FFMpeg\Coordinate\Dimension; class Stream extends AbstractData { @@ -24,7 +24,7 @@ class Stream extends AbstractData */ public function isAudio() { - return $this->get('codec_type') === 'audio'; + return 'audio' === $this->get('codec_type'); } /** @@ -34,7 +34,7 @@ class Stream extends AbstractData */ public function isVideo() { - return $this->get('codec_type') === 'video'; + return 'video' === $this->get('codec_type'); } /** @@ -42,8 +42,8 @@ class Stream extends AbstractData * * @return Dimension * - * @throws LogicException In case the stream is not a video stream. - * @throws RuntimeException In case the dimensions can not be extracted. + * @throws LogicException in case the stream is not a video stream + * @throws RuntimeException in case the dimensions can not be extracted */ public function getDimensions() { @@ -68,7 +68,7 @@ class Stream extends AbstractData } if (null !== $displayRatio && null !== $sampleRatio) { - if ($sampleRatio[0] !== 1 && $sampleRatio[1] !== 1) { + if (1 !== $sampleRatio[0] && 1 !== $sampleRatio[1]) { if (null !== $width && null !== $height) { // stretch video according to pixel sample aspect ratio $width = round($width * ($sampleRatio[0] / $sampleRatio[1])); @@ -84,9 +84,10 @@ class Stream extends AbstractData /** * Extracts a ratio from a string in a \d+:\d+ format given a key name. * - * @param Stream $stream The stream where to look for the ratio. - * @param string $name the name of the key. - * @return null|array An array containing the width and the height, null if not found. + * @param Stream $stream the stream where to look for the ratio + * @param string $name the name of the key + * + * @return array|null an array containing the width and the height, null if not found */ private function extractRatio(Stream $stream, $name) { @@ -100,7 +101,9 @@ class Stream extends AbstractData return $int > 0; }); if (2 === count($data)) { - return array_map(function ($int) { return (int) $int; }, $data); + return array_map(function ($int) { + return (int) $int; + }, $data); } } } diff --git a/src/FFMpeg/FFProbe/DataMapping/StreamCollection.php b/src/FFMpeg/FFProbe/DataMapping/StreamCollection.php index 4b640e8..e2acc6e 100644 --- a/src/FFMpeg/FFProbe/DataMapping/StreamCollection.php +++ b/src/FFMpeg/FFProbe/DataMapping/StreamCollection.php @@ -11,11 +11,13 @@ namespace FFMpeg\FFProbe\DataMapping; +use Traversable; + class StreamCollection implements \Countable, \IteratorAggregate { private $streams; - public function __construct(array $streams = array()) + public function __construct(array $streams = []) { $this->streams = array_values($streams); } @@ -24,7 +26,7 @@ class StreamCollection implements \Countable, \IteratorAggregate * Returns the first stream of the collection, null if the collection is * empty. * - * @return null|Stream + * @return Stream|null */ public function first() { @@ -36,8 +38,6 @@ class StreamCollection implements \Countable, \IteratorAggregate /** * Adds a stream to the collection. * - * @param Stream $stream - * * @return StreamCollection */ public function add(Stream $stream) @@ -74,8 +74,7 @@ class StreamCollection implements \Countable, \IteratorAggregate /** * {@inheritdoc} */ - #[\ReturnTypeWillChange] - public function count() + public function count(): int { return count($this->streams); } @@ -93,8 +92,7 @@ class StreamCollection implements \Countable, \IteratorAggregate /** * {@inheritdoc} */ - #[\ReturnTypeWillChange] - public function getIterator() + public function getIterator(): Traversable { return new \ArrayIterator($this->streams); } diff --git a/src/FFMpeg/FFProbe/Mapper.php b/src/FFMpeg/FFProbe/Mapper.php index c0bf70f..60217eb 100644 --- a/src/FFMpeg/FFProbe/Mapper.php +++ b/src/FFMpeg/FFProbe/Mapper.php @@ -11,11 +11,11 @@ namespace FFMpeg\FFProbe; +use FFMpeg\Exception\InvalidArgumentException; use FFMpeg\FFProbe; use FFMpeg\FFProbe\DataMapping\Format; -use FFMpeg\FFProbe\DataMapping\StreamCollection; use FFMpeg\FFProbe\DataMapping\Stream; -use FFMpeg\Exception\InvalidArgumentException; +use FFMpeg\FFProbe\DataMapping\StreamCollection; class Mapper implements MapperInterface { @@ -30,9 +30,7 @@ class Mapper implements MapperInterface case FFProbe::TYPE_STREAMS: return $this->mapStreams($data); default: - throw new InvalidArgumentException(sprintf( - 'Invalid type `%s`.', $type - )); + throw new InvalidArgumentException(sprintf('Invalid type `%s`.', $type)); } } diff --git a/src/FFMpeg/FFProbe/OptionsTester.php b/src/FFMpeg/FFProbe/OptionsTester.php index 1f95f3c..186b055 100644 --- a/src/FFMpeg/FFProbe/OptionsTester.php +++ b/src/FFMpeg/FFProbe/OptionsTester.php @@ -60,7 +60,7 @@ class OptionsTester implements OptionsTesterInterface } try { - $output = $this->ffprobe->command(array('-help', '-loglevel', 'quiet')); + $output = $this->ffprobe->command(['-help', '-loglevel', 'quiet']); } catch (ExecutionFailureException $e) { throw new RuntimeException('Your FFProbe version is too old and does not support `-help` option, please upgrade.', $e->getCode(), $e); } diff --git a/src/FFMpeg/FFProbe/OutputParser.php b/src/FFMpeg/FFProbe/OutputParser.php index acaa1a0..1fb620d 100644 --- a/src/FFMpeg/FFProbe/OutputParser.php +++ b/src/FFMpeg/FFProbe/OutputParser.php @@ -11,8 +11,8 @@ namespace FFMpeg\FFProbe; -use FFMpeg\FFProbe; use FFMpeg\Exception\InvalidArgumentException; +use FFMpeg\FFProbe; class OutputParser implements OutputParserInterface { @@ -35,11 +35,10 @@ class OutputParser implements OutputParserInterface private function parseFormat($data) { - $ret = array(); + $ret = []; foreach (explode(PHP_EOL, $data) as $line) { - - if (in_array($line, array('[FORMAT]', '[/FORMAT]'))) { + if (in_array($line, ['[FORMAT]', '[/FORMAT]'])) { continue; } @@ -58,7 +57,7 @@ class OutputParser implements OutputParserInterface if (0 === strpos($key, 'TAG:')) { if (!isset($ret['tags'])) { - $ret['tags'] = array(); + $ret['tags'] = []; } $ret['tags'][substr($key, 4)] = $value; } else { @@ -66,22 +65,21 @@ class OutputParser implements OutputParserInterface } } - return array('format' => $ret); + return ['format' => $ret]; } private function parseStreams($data) { - $ret = array(); + $ret = []; $n = -1; foreach (explode(PHP_EOL, $data) as $line) { - - if ($line == '[STREAM]') { - $n ++; - $ret[$n] = array(); + if ('[STREAM]' == $line) { + ++$n; + $ret[$n] = []; continue; } - if ($line == '[/STREAM]') { + if ('[/STREAM]' == $line) { continue; } @@ -101,18 +99,18 @@ class OutputParser implements OutputParserInterface continue; } - if (in_array($key, array('index', 'width', 'height', 'channels', 'bits_per_sample', 'has_b_frames', 'level', 'start_pts', 'duration_ts'))) { + if (in_array($key, ['index', 'width', 'height', 'channels', 'bits_per_sample', 'has_b_frames', 'level', 'start_pts', 'duration_ts'])) { $value = (int) $value; } if (0 === strpos($key, 'TAG:')) { if (!isset($ret[$n]['tags'])) { - $ret[$n]['tags'] = array(); + $ret[$n]['tags'] = []; } $ret[$n]['tags'][substr($key, 4)] = $value; } elseif (0 === strpos($key, 'DISPOSITION:')) { if (!isset($ret[$n]['disposition'])) { - $ret[$n]['disposition'] = array(); + $ret[$n]['disposition'] = []; } $ret[$n]['disposition'][substr($key, 12)] = $value; } else { @@ -120,6 +118,6 @@ class OutputParser implements OutputParserInterface } } - return array('streams' => $ret); + return ['streams' => $ret]; } } diff --git a/src/FFMpeg/Filters/AdvancedMedia/ANullSrcFilter.php b/src/FFMpeg/Filters/AdvancedMedia/ANullSrcFilter.php index ca575b1..4c5753b 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/ANullSrcFilter.php +++ b/src/FFMpeg/Filters/AdvancedMedia/ANullSrcFilter.php @@ -59,13 +59,13 @@ class ANullSrcFilter extends AbstractComplexFilter */ public function applyComplex(AdvancedMedia $media) { - return array( + return [ '-filter_complex', - $this->getName() . $this->buildFilterOptions(array( + $this->getName().$this->buildFilterOptions([ 'channel_layout' => $this->channelLayout, 'sample_rate' => $this->sampleRate, 'nb_samples' => $this->nbSamples, - )) - ); + ]), + ]; } } diff --git a/src/FFMpeg/Filters/AdvancedMedia/AbstractComplexFilter.php b/src/FFMpeg/Filters/AdvancedMedia/AbstractComplexFilter.php index f5a6b20..59d2b6d 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/AbstractComplexFilter.php +++ b/src/FFMpeg/Filters/AdvancedMedia/AbstractComplexFilter.php @@ -42,19 +42,19 @@ abstract class AbstractComplexFilter implements ComplexCompatibleFilter * * @param array $params Associative array of filter options. The options may be null. * - * @return string The string of the form "=name1=value1:name2=value2" or empty string. + * @return string the string of the form "=name1=value1:name2=value2" or empty string */ protected function buildFilterOptions(array $params) { - $config = array(); + $config = []; foreach ($params as $paramName => $paramValue) { - if ($paramValue !== null) { - $config[] = $paramName . '=' . $paramValue; + if (null !== $paramValue) { + $config[] = $paramName.'='.$paramValue; } } if (!empty($config)) { - return '=' . implode(':', $config); + return '='.implode(':', $config); } return ''; diff --git a/src/FFMpeg/Filters/AdvancedMedia/ComplexCompatibleFilter.php b/src/FFMpeg/Filters/AdvancedMedia/ComplexCompatibleFilter.php index c967d95..4c4461d 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/ComplexCompatibleFilter.php +++ b/src/FFMpeg/Filters/AdvancedMedia/ComplexCompatibleFilter.php @@ -27,9 +27,7 @@ interface ComplexCompatibleFilter extends FilterInterface /** * Apply the complex filter to the given media. * - * @param AdvancedMedia $media - * - * @return string[] An array of arguments. + * @return string[] an array of arguments */ public function applyComplex(AdvancedMedia $media); } diff --git a/src/FFMpeg/Filters/AdvancedMedia/ComplexFilterContainer.php b/src/FFMpeg/Filters/AdvancedMedia/ComplexFilterContainer.php index d8bcc4e..4925ad9 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/ComplexFilterContainer.php +++ b/src/FFMpeg/Filters/AdvancedMedia/ComplexFilterContainer.php @@ -32,9 +32,8 @@ class ComplexFilterContainer implements ComplexFilterInterface /** * ComplexFilter constructor. * - * @param string $inLabels - * @param ComplexCompatibleFilter $baseFilter - * @param string $outLabels + * @param string $inLabels + * @param string $outLabels */ public function __construct($inLabels, ComplexCompatibleFilter $baseFilter, $outLabels) { diff --git a/src/FFMpeg/Filters/AdvancedMedia/ComplexFilters.php b/src/FFMpeg/Filters/AdvancedMedia/ComplexFilters.php index 46d438e..4134405 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/ComplexFilters.php +++ b/src/FFMpeg/Filters/AdvancedMedia/ComplexFilters.php @@ -16,8 +16,6 @@ class ComplexFilters /** * ComplexFilters constructor. - * - * @param AdvancedMedia $media */ public function __construct(AdvancedMedia $media) { @@ -34,21 +32,22 @@ class ComplexFilters public function custom($in, $parameters, $out) { $this->media->addFilter($in, new CustomComplexFilter($parameters), $out); + return $this; } /** * Adds padding (black bars) to a video. * - * @param string $in - * @param Dimension $dimension - * @param string $out + * @param string $in + * @param string $out * * @return ComplexFilters */ public function pad($in, Dimension $dimension, $out) { $this->media->addFilter($in, new PadFilter($dimension), $out); + return $this; } @@ -58,13 +57,13 @@ class ComplexFilters * @param string $in * @param string $imagePath * @param string $out - * @param array $coordinates * * @return $this */ - public function watermark($in, $imagePath, $out, array $coordinates = array()) + public function watermark($in, $imagePath, $out, array $coordinates = []) { $this->media->addFilter($in, new WatermarkFilter($imagePath, $coordinates), $out); + return $this; } @@ -78,11 +77,13 @@ class ComplexFilters * @param string $out * * @return ComplexFilters + * * @see https://ffmpeg.org/ffmpeg-filters.html#xstack */ public function xStack($in, $layout, $inputsCount, $out) { $this->media->addFilter($in, new XStackFilter($layout, $inputsCount), $out); + return $this; } @@ -101,6 +102,7 @@ class ComplexFilters * @param float|null $decimals * * @return ComplexFilters + * * @see https://ffmpeg.org/ffmpeg-filters.html#allrgb_002c-allyuv_002c-color_002c-haldclutsrc_002c-nullsrc_002c-pal75bars_002c-pal100bars_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc_002c-testsrc2_002c-yuvtestsrc */ public function testSrc( @@ -115,8 +117,12 @@ class ComplexFilters $alpha = null, $decimals = null ) { - $this->media->addFilter('', - new TestSrcFilter($type, $size, $duration, $sar, $rate, $level, $color, $alpha, $decimals), $out); + $this->media->addFilter( + '', + new TestSrcFilter($type, $size, $duration, $sar, $rate, $level, $color, $alpha, $decimals), + $out + ); + return $this; } @@ -129,6 +135,7 @@ class ComplexFilters * @param int|null $nbSamples * * @return ComplexFilters + * * @see https://ffmpeg.org/ffmpeg-filters.html#anullsrc */ public function aNullSrc( @@ -138,6 +145,7 @@ class ComplexFilters $nbSamples = null ) { $this->media->addFilter('', new ANullSrcFilter($channelLayout, $sampleRate, $nbSamples), $out); + return $this; } @@ -152,6 +160,7 @@ class ComplexFilters * @param string|null $samples_per_frame * * @return $this + * * @see https://ffmpeg.org/ffmpeg-filters.html#sine */ public function sine( @@ -162,8 +171,12 @@ class ComplexFilters $sample_rate = null, $samples_per_frame = null ) { - $this->media->addFilter('', - new SineFilter($duration, $frequency, $beep_factor, $sample_rate, $samples_per_frame), $out); + $this->media->addFilter( + '', + new SineFilter($duration, $frequency, $beep_factor, $sample_rate, $samples_per_frame), + $out + ); + return $this; } } diff --git a/src/FFMpeg/Filters/AdvancedMedia/CustomComplexFilter.php b/src/FFMpeg/Filters/AdvancedMedia/CustomComplexFilter.php index 25e0d71..454e0ba 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/CustomComplexFilter.php +++ b/src/FFMpeg/Filters/AdvancedMedia/CustomComplexFilter.php @@ -38,6 +38,6 @@ class CustomComplexFilter extends AbstractComplexFilter */ public function applyComplex(AdvancedMedia $media) { - return array('-filter_complex', $this->filter); + return ['-filter_complex', $this->filter]; } } diff --git a/src/FFMpeg/Filters/AdvancedMedia/SineFilter.php b/src/FFMpeg/Filters/AdvancedMedia/SineFilter.php index cdfe4ed..630e925 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/SineFilter.php +++ b/src/FFMpeg/Filters/AdvancedMedia/SineFilter.php @@ -77,21 +77,19 @@ class SineFilter extends AbstractComplexFilter /** * Apply the complex filter to the given media. * - * @param AdvancedMedia $media - * - * @return string[] An array of arguments. + * @return string[] an array of arguments */ public function applyComplex(AdvancedMedia $media) { - return array( + return [ '-filter_complex', - $this->getName() . $this->buildFilterOptions(array( + $this->getName().$this->buildFilterOptions([ 'frequency' => $this->frequency, 'beep_factor' => $this->beep_factor, 'sample_rate' => $this->sample_rate, 'duration' => $this->duration, 'samples_per_frame' => $this->samples_per_frame, - )) - ); + ]), + ]; } } diff --git a/src/FFMpeg/Filters/AdvancedMedia/TestSrcFilter.php b/src/FFMpeg/Filters/AdvancedMedia/TestSrcFilter.php index 9dfe77e..53e7bc5 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/TestSrcFilter.php +++ b/src/FFMpeg/Filters/AdvancedMedia/TestSrcFilter.php @@ -14,72 +14,72 @@ class TestSrcFilter extends AbstractComplexFilter /** * Source returns frames of size 4096x4096 of all rgb colors. */ - const ALLRGB = 'allrgb'; + public const ALLRGB = 'allrgb'; /** * Source returns frames of size 4096x4096 of all yuv colors. */ - const ALLYUV = 'allyuv'; + public const ALLYUV = 'allyuv'; /** * Source provides an uniformly colored input. */ - const COLOR = 'color'; + public const COLOR = 'color'; /** * Source provides an identity Hald CLUT. */ - const HALDCLUTSRC = 'haldclutsrc'; + public const HALDCLUTSRC = 'haldclutsrc'; /** * Source returns unprocessed video frames. * It is mainly useful to be employed in analysis / debugging tools, * or as the source for filters which ignore the input data. */ - const NULLSRC = 'nullsrc'; + public const NULLSRC = 'nullsrc'; /** * Source generates a color bars pattern, based on EBU PAL recommendations with 75% color levels. */ - const PAL75BARS = 'pal75bars'; + public const PAL75BARS = 'pal75bars'; /** * Source generates a color bars pattern, based on EBU PAL recommendations with 100% color levels. */ - const PAL100BARS = 'pal100bars'; + public const PAL100BARS = 'pal100bars'; /** * Source generates an RGB test pattern useful for detecting RGB vs BGR issues. * You should see a red, green and blue stripe from top to bottom. */ - const RGBTESTSRC = 'rgbtestsrc'; + public const RGBTESTSRC = 'rgbtestsrc'; /** * Source generates a color bars pattern, based on the SMPTE Engineering Guideline EG 1-1990. */ - const SMPTEBARS = 'smptebars'; + public const SMPTEBARS = 'smptebars'; /** * Source generates a color bars pattern, based on the SMPTE RP 219-2002. */ - const SMPTEHDBARS = 'smptehdbars'; + public const SMPTEHDBARS = 'smptehdbars'; /** * Source generates a test video pattern, showing a color pattern, a scrolling gradient and a timestamp. * This is mainly intended for testing purposes. */ - const TESTSRC = 'testsrc'; + public const TESTSRC = 'testsrc'; /** * Source is similar to testsrc, but supports more pixel formats instead of just rgb24. * This allows using it as an input for other tests without requiring a format conversion. */ - const TESTSRC2 = 'testsrc2'; + public const TESTSRC2 = 'testsrc2'; /** * Source generates an YUV test pattern. You should see a y, cb and cr stripe from top to bottom. */ - const YUVTESTSRC = 'yuvtestsrc'; + public const YUVTESTSRC = 'yuvtestsrc'; /** * @var string|null @@ -229,9 +229,9 @@ class TestSrcFilter extends AbstractComplexFilter */ public function applyComplex(AdvancedMedia $media) { - return array( + return [ '-filter_complex', - $this->type . $this->buildFilterOptions(array( + $this->type.$this->buildFilterOptions([ 'level' => $this->level, 'color' => $this->color, 'size' => $this->size, @@ -239,8 +239,8 @@ class TestSrcFilter extends AbstractComplexFilter 'duration' => $this->duration, 'sar' => $this->sar, 'alpha' => $this->alpha, - 'decimals' => $this->decimals - )) - ); + 'decimals' => $this->decimals, + ]), + ]; } } diff --git a/src/FFMpeg/Filters/AdvancedMedia/XStackFilter.php b/src/FFMpeg/Filters/AdvancedMedia/XStackFilter.php index 3058a5e..91b2ec2 100644 --- a/src/FFMpeg/Filters/AdvancedMedia/XStackFilter.php +++ b/src/FFMpeg/Filters/AdvancedMedia/XStackFilter.php @@ -14,10 +14,10 @@ use FFMpeg\Media\AdvancedMedia; */ class XStackFilter extends AbstractComplexFilter { - const LAYOUT_2X2 = '0_0|0_h0|w0_0|w0_h0'; - const LAYOUT_1X4 = '0_0|0_h0|0_h0+h1|0_h0+h1+h2'; - const LAYOUT_3X3 = '0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1'; - const LAYOUT_4X4 = '0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2'; + public const LAYOUT_2X2 = '0_0|0_h0|w0_0|w0_h0'; + public const LAYOUT_1X4 = '0_0|0_h0|0_h0+h1|0_h0+h1+h2'; + public const LAYOUT_3X3 = '0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1'; + public const LAYOUT_4X4 = '0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2'; /** * @var string @@ -51,9 +51,10 @@ class XStackFilter extends AbstractComplexFilter public static function getInputByCount($count) { $result = ''; - for ($i = 0; $i < $count; $i++) { - $result .= '[' . $i . ':v]'; + for ($i = 0; $i < $count; ++$i) { + $result .= '['.$i.':v]'; } + return $result; } @@ -82,12 +83,12 @@ class XStackFilter extends AbstractComplexFilter */ public function applyComplex(AdvancedMedia $media) { - return array( + return [ '-filter_complex', - $this->getName() . $this->buildFilterOptions(array( + $this->getName().$this->buildFilterOptions([ 'inputs' => $this->inputsCount, - 'layout' => $this->layout - )) - ); + 'layout' => $this->layout, + ]), + ]; } } diff --git a/src/FFMpeg/Filters/Audio/AddMetadataFilter.php b/src/FFMpeg/Filters/Audio/AddMetadataFilter.php index 7c466f9..daad712 100644 --- a/src/FFMpeg/Filters/Audio/AddMetadataFilter.php +++ b/src/FFMpeg/Filters/Audio/AddMetadataFilter.php @@ -11,48 +11,47 @@ namespace FFMpeg\Filters\Audio; -use FFMpeg\Filters\Audio\AudioFilterInterface; use FFMpeg\Format\AudioInterface; use FFMpeg\Media\Audio; class AddMetadataFilter implements AudioFilterInterface { - /** @var Array */ - private $metaArr; - /** @var Integer */ - private $priority; + /** @var array */ + private $metaArr; + /** @var int */ + private $priority; - function __construct($metaArr = null, $priority = 9) - { - $this->metaArr = $metaArr; - $this->priority = $priority; - } + public function __construct($metaArr = null, $priority = 9) + { + $this->metaArr = $metaArr; + $this->priority = $priority; + } - public function getPriority() - { - //must be of high priority in case theres a second input stream (artwork) to register with audio - return $this->priority; - } + public function getPriority() + { + //must be of high priority in case theres a second input stream (artwork) to register with audio + return $this->priority; + } - public function apply(Audio $audio, AudioInterface $format) - { - $meta = $this->metaArr; + public function apply(Audio $audio, AudioInterface $format) + { + $meta = $this->metaArr; - if (is_null($meta)) { - return array('-map_metadata', '-1', '-vn'); - } + if (is_null($meta)) { + return ['-map_metadata', '-1', '-vn']; + } - $metadata = array(); + $metadata = []; - if (array_key_exists("artwork", $meta)) { - array_push($metadata, "-i", $meta['artwork'], "-map", "0", "-map", "1"); - unset($meta['artwork']); - } + if (array_key_exists('artwork', $meta)) { + array_push($metadata, '-i', $meta['artwork'], '-map', '0', '-map', '1'); + unset($meta['artwork']); + } - foreach ($meta as $k => $v) { - array_push($metadata, "-metadata", "$k=$v"); - } + foreach ($meta as $k => $v) { + array_push($metadata, '-metadata', "$k=$v"); + } - return $metadata; - } + return $metadata; + } } diff --git a/src/FFMpeg/Filters/Audio/AudioClipFilter.php b/src/FFMpeg/Filters/Audio/AudioClipFilter.php index c124dca..dcf9ffc 100644 --- a/src/FFMpeg/Filters/Audio/AudioClipFilter.php +++ b/src/FFMpeg/Filters/Audio/AudioClipFilter.php @@ -15,8 +15,8 @@ use FFMpeg\Coordinate\TimeCode; use FFMpeg\Format\AudioInterface; use FFMpeg\Media\Audio; -class AudioClipFilter implements AudioFilterInterface { - +class AudioClipFilter implements AudioFilterInterface +{ /** * @var TimeCode */ @@ -32,53 +32,56 @@ class AudioClipFilter implements AudioFilterInterface { */ private $priority; - - public function __construct(TimeCode $start, TimeCode $duration = null, $priority = 0) { + public function __construct(TimeCode $start, TimeCode $duration = null, $priority = 0) + { $this->start = $start; $this->duration = $duration; $this->priority = $priority; } /** - * @inheritDoc + * {@inheritDoc} */ - public function getPriority() { + public function getPriority() + { return $this->priority; } - /** - * Returns the start position the audio is being cutted - * - * @return TimeCode - */ - public function getStart() { - return $this->start; - } + /** + * Returns the start position the audio is being cutted. + * + * @return TimeCode + */ + public function getStart() + { + return $this->start; + } - /** - * Returns how long the audio is being cutted. Returns null when the duration is infinite, - * - * @return TimeCode|null - */ - public function getDuration() { - return $this->duration; - } + /** + * Returns how long the audio is being cutted. Returns null when the duration is infinite,. + * + * @return TimeCode|null + */ + public function getDuration() + { + return $this->duration; + } - /** - * @inheritDoc - */ - public function apply(Audio $audio, AudioInterface $format) { - $commands = array('-ss', (string) $this->start); + /** + * {@inheritDoc} + */ + public function apply(Audio $audio, AudioInterface $format) + { + $commands = ['-ss', (string) $this->start]; - if ($this->duration !== null) { + if (null !== $this->duration) { $commands[] = '-t'; $commands[] = (string) $this->duration; - } + } - $commands[] = '-acodec'; - $commands[] = 'copy'; + $commands[] = '-acodec'; + $commands[] = 'copy'; - return $commands; - } - -} \ No newline at end of file + return $commands; + } +} diff --git a/src/FFMpeg/Filters/Audio/AudioFilterInterface.php b/src/FFMpeg/Filters/Audio/AudioFilterInterface.php index b111cfe..b49388b 100644 --- a/src/FFMpeg/Filters/Audio/AudioFilterInterface.php +++ b/src/FFMpeg/Filters/Audio/AudioFilterInterface.php @@ -20,9 +20,6 @@ interface AudioFilterInterface extends FilterInterface /** * Applies the filter on the the Audio media given an format. * - * @param Audio $audio - * @param AudioInterface $format - * * @return array An array of arguments */ public function apply(Audio $audio, AudioInterface $format); diff --git a/src/FFMpeg/Filters/Audio/AudioFilters.php b/src/FFMpeg/Filters/Audio/AudioFilters.php index 41308c0..db18a49 100644 --- a/src/FFMpeg/Filters/Audio/AudioFilters.php +++ b/src/FFMpeg/Filters/Audio/AudioFilters.php @@ -11,9 +11,8 @@ namespace FFMpeg\Filters\Audio; -use FFMpeg\Filters\Audio\AddMetadataFilter; -use FFMpeg\Media\Audio; use FFMpeg\Coordinate\TimeCode; +use FFMpeg\Media\Audio; class AudioFilters { @@ -27,7 +26,7 @@ class AudioFilters /** * Resamples the audio file. * - * @param Integer $rate + * @param int $rate * * @return AudioFilters */ @@ -40,17 +39,18 @@ class AudioFilters /** * Add metadata to an audio file. If no arguments are given then filter - * will remove all metadata from the audio file - * @param Array|Null $data If array must contain one of these key/value pairs: - * - "title": Title metadata - * - "artist": Artist metadata - * - "composer": Composer metadata - * - "album": Album metadata - * - "track": Track metadata - * - "artwork": Song artwork. String of file path - * - "year": Year metadata - * - "genre": Genre metadata - * - "description": Description metadata + * will remove all metadata from the audio file. + * + * @param array|null $data If array must contain one of these key/value pairs: + * - "title": Title metadata + * - "artist": Artist metadata + * - "composer": Composer metadata + * - "album": Album metadata + * - "track": Track metadata + * - "artwork": Song artwork. String of file path + * - "year": Year metadata + * - "genre": Genre metadata + * - "description": Description metadata */ public function addMetadata($data = null) { @@ -60,22 +60,24 @@ class AudioFilters } /** - * Cuts the audio at `$start`, optionally define the end + * Cuts the audio at `$start`, optionally define the end. + * + * @param TimeCode $start Where the clipping starts(seek to time) + * @param TimeCode $duration How long the clipped audio should be * - * @param TimeCode $start Where the clipping starts(seek to time) - * @param TimeCode $duration How long the clipped audio should be * @return AudioFilters */ - public function clip($start, $duration = null) { + public function clip($start, $duration = null) + { $this->media->addFilter(new AudioClipFilter($start, $duration)); return $this; } /** - * Applies a custom filter + * Applies a custom filter. * - * @param string $parameters + * @param string $parameters * * @return AudioFilters */ diff --git a/src/FFMpeg/Filters/Audio/AudioResamplableFilter.php b/src/FFMpeg/Filters/Audio/AudioResamplableFilter.php index 8536d08..4ac7767 100644 --- a/src/FFMpeg/Filters/Audio/AudioResamplableFilter.php +++ b/src/FFMpeg/Filters/Audio/AudioResamplableFilter.php @@ -36,8 +36,7 @@ class AudioResamplableFilter implements AudioFilterInterface } /** - * - * @return Integer + * @return int */ public function getRate() { @@ -49,6 +48,6 @@ class AudioResamplableFilter implements AudioFilterInterface */ public function apply(Audio $audio, AudioInterface $format) { - return array('-ac', 2, '-ar', $this->rate); + return ['-ac', 2, '-ar', $this->rate]; } } diff --git a/src/FFMpeg/Filters/Audio/CustomFilter.php b/src/FFMpeg/Filters/Audio/CustomFilter.php index 5e565f1..f461699 100644 --- a/src/FFMpeg/Filters/Audio/CustomFilter.php +++ b/src/FFMpeg/Filters/Audio/CustomFilter.php @@ -8,6 +8,7 @@ * 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; @@ -21,7 +22,7 @@ class CustomFilter implements AudioFilterInterface private $priority; /** - * A custom filter, useful if you want to build complex filters + * A custom filter, useful if you want to build complex filters. * * @param string $filter * @param int $priority @@ -45,7 +46,7 @@ class CustomFilter implements AudioFilterInterface */ public function apply(Audio $audio, AudioInterface $format) { - $commands = array('-af', $this->filter); + $commands = ['-af', $this->filter]; return $commands; } diff --git a/src/FFMpeg/Filters/Audio/SimpleFilter.php b/src/FFMpeg/Filters/Audio/SimpleFilter.php index 46639cd..7fbef3d 100644 --- a/src/FFMpeg/Filters/Audio/SimpleFilter.php +++ b/src/FFMpeg/Filters/Audio/SimpleFilter.php @@ -11,8 +11,8 @@ namespace FFMpeg\Filters\Audio; -use FFMpeg\Media\Audio; use FFMpeg\Format\AudioInterface; +use FFMpeg\Media\Audio; class SimpleFilter implements AudioFilterInterface { diff --git a/src/FFMpeg/Filters/FiltersCollection.php b/src/FFMpeg/Filters/FiltersCollection.php index a0ebbf0..eb33c83 100644 --- a/src/FFMpeg/Filters/FiltersCollection.php +++ b/src/FFMpeg/Filters/FiltersCollection.php @@ -11,20 +11,20 @@ namespace FFMpeg\Filters; +use Traversable; + class FiltersCollection implements \Countable, \IteratorAggregate { private $sorted; - private $filters = array(); + private $filters = []; /** - * @param FilterInterface $filter - * * @return FiltersCollection */ public function add(FilterInterface $filter) { $this->filters[$filter->getPriority()][] = $filter; - $this->sorted = null; + $this->sorted = null; return $this; } @@ -32,8 +32,7 @@ class FiltersCollection implements \Countable, \IteratorAggregate /** * {@inheritdoc} */ - #[\ReturnTypeWillChange] - public function count() + public function count(): int { if (0 === count($this->filters)) { return 0; @@ -45,8 +44,7 @@ class FiltersCollection implements \Countable, \IteratorAggregate /** * {@inheritdoc} */ - #[\ReturnTypeWillChange] - public function getIterator() + public function getIterator(): Traversable { if (null === $this->sorted) { if (0 === count($this->filters)) { diff --git a/src/FFMpeg/Filters/Frame/CustomFrameFilter.php b/src/FFMpeg/Filters/Frame/CustomFrameFilter.php index 8af20bd..92d3599 100644 --- a/src/FFMpeg/Filters/Frame/CustomFrameFilter.php +++ b/src/FFMpeg/Filters/Frame/CustomFrameFilter.php @@ -11,7 +11,6 @@ namespace FFMpeg\Filters\Frame; -use FFMpeg\Exception\RuntimeException; use FFMpeg\Media\Frame; class CustomFrameFilter implements FrameFilterInterface @@ -22,7 +21,7 @@ class CustomFrameFilter implements FrameFilterInterface private $priority; /** - * A custom filter, useful if you want to build complex filters + * A custom filter, useful if you want to build complex filters. * * @param string $filter * @param int $priority @@ -46,9 +45,8 @@ class CustomFrameFilter implements FrameFilterInterface */ public function apply(Frame $frame) { - $commands = array('-vf', $this->filter); + $commands = ['-vf', $this->filter]; return $commands; } } - diff --git a/src/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.php b/src/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.php index 1a7b46b..7c2d9d0 100644 --- a/src/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.php +++ b/src/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.php @@ -38,17 +38,16 @@ class DisplayRatioFixerFilter implements FrameFilterInterface public function apply(Frame $frame) { $dimensions = null; - $commands = array(); + $commands = []; foreach ($frame->getVideo()->getStreams() as $stream) { if ($stream->isVideo()) { try { $dimensions = $stream->getDimensions(); $commands[] = '-s'; - $commands[] = $dimensions->getWidth() . 'x' . $dimensions->getHeight(); + $commands[] = $dimensions->getWidth().'x'.$dimensions->getHeight(); break; } catch (RuntimeException $e) { - } } } diff --git a/src/FFMpeg/Filters/Frame/FrameFilters.php b/src/FFMpeg/Filters/Frame/FrameFilters.php index ad7e95a..8f2f45b 100644 --- a/src/FFMpeg/Filters/Frame/FrameFilters.php +++ b/src/FFMpeg/Filters/Frame/FrameFilters.php @@ -38,9 +38,9 @@ class FrameFilters } /** - * Applies a custom filter: -vf foo bar + * Applies a custom filter: -vf foo bar. * - * @param string $parameters + * @param string $parameters * * @return FrameFilters */ diff --git a/src/FFMpeg/Filters/Video/ClipFilter.php b/src/FFMpeg/Filters/Video/ClipFilter.php index 3169095..320996c 100644 --- a/src/FFMpeg/Filters/Video/ClipFilter.php +++ b/src/FFMpeg/Filters/Video/ClipFilter.php @@ -11,9 +11,9 @@ namespace FFMpeg\Filters\Video; +use FFMpeg\Coordinate\TimeCode; use FFMpeg\Format\VideoInterface; use FFMpeg\Media\Video; -use FFMpeg\Coordinate\TimeCode; class ClipFilter implements VideoFilterInterface { @@ -60,11 +60,11 @@ class ClipFilter implements VideoFilterInterface */ public function apply(Video $video, VideoInterface $format) { - $commands = array('-ss', (string) $this->start); + $commands = ['-ss', (string) $this->start]; - if ($this->duration !== null) { - $commands[] = '-t'; - $commands[] = (string) $this->duration; + if (null !== $this->duration) { + $commands[] = '-t'; + $commands[] = (string) $this->duration; } return $commands; diff --git a/src/FFMpeg/Filters/Video/CropFilter.php b/src/FFMpeg/Filters/Video/CropFilter.php index 5e19903..459c854 100644 --- a/src/FFMpeg/Filters/Video/CropFilter.php +++ b/src/FFMpeg/Filters/Video/CropFilter.php @@ -1,4 +1,5 @@ dimension->getWidth() .':' . $this->dimension->getHeight() . ':' . $this->point->getX() . ':' . $this->point->getY() - ); + 'crop='. + $this->dimension->getWidth().':'.$this->dimension->getHeight().':'.$this->point->getX().':'.$this->point->getY(), + ]; } } diff --git a/src/FFMpeg/Filters/Video/CustomFilter.php b/src/FFMpeg/Filters/Video/CustomFilter.php index c5779cb..ecfe2ae 100644 --- a/src/FFMpeg/Filters/Video/CustomFilter.php +++ b/src/FFMpeg/Filters/Video/CustomFilter.php @@ -8,6 +8,7 @@ * 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; @@ -21,7 +22,7 @@ class CustomFilter implements VideoFilterInterface private $priority; /** - * A custom filter, useful if you want to build complex filters + * A custom filter, useful if you want to build complex filters. * * @param string $filter * @param int $priority @@ -45,7 +46,7 @@ class CustomFilter implements VideoFilterInterface */ public function apply(Video $video, VideoInterface $format) { - $commands = array('-vf', $this->filter); + $commands = ['-vf', $this->filter]; return $commands; } diff --git a/src/FFMpeg/Filters/Video/ExtractMultipleFramesFilter.php b/src/FFMpeg/Filters/Video/ExtractMultipleFramesFilter.php index 65847a7..3f13806 100644 --- a/src/FFMpeg/Filters/Video/ExtractMultipleFramesFilter.php +++ b/src/FFMpeg/Filters/Video/ExtractMultipleFramesFilter.php @@ -13,25 +13,25 @@ namespace FFMpeg\Filters\Video; use FFMpeg\Exception\InvalidArgumentException; use FFMpeg\Exception\RuntimeException; -use FFMpeg\Media\Video; use FFMpeg\Format\VideoInterface; +use FFMpeg\Media\Video; class ExtractMultipleFramesFilter implements VideoFilterInterface { /** will extract a frame every second */ - const FRAMERATE_EVERY_SEC = '1/1'; + public const FRAMERATE_EVERY_SEC = '1/1'; /** will extract a frame every 2 seconds */ - const FRAMERATE_EVERY_2SEC = '1/2'; + public const FRAMERATE_EVERY_2SEC = '1/2'; /** will extract a frame every 5 seconds */ - const FRAMERATE_EVERY_5SEC = '1/5'; + public const FRAMERATE_EVERY_5SEC = '1/5'; /** will extract a frame every 10 seconds */ - const FRAMERATE_EVERY_10SEC = '1/10'; + public const FRAMERATE_EVERY_10SEC = '1/10'; /** will extract a frame every 30 seconds */ - const FRAMERATE_EVERY_30SEC = '1/30'; + public const FRAMERATE_EVERY_30SEC = '1/30'; /** will extract a frame every minute */ - const FRAMERATE_EVERY_60SEC = '1/60'; + public const FRAMERATE_EVERY_60SEC = '1/60'; - /** @var integer */ + /** @var int */ private $priority; private $frameRate; private $destinationFolder; @@ -46,25 +46,30 @@ class ExtractMultipleFramesFilter implements VideoFilterInterface $this->frameRate = $frameRate; // Make sure that the destination folder has a trailing slash - if(strcmp( substr($destinationFolder, -1), "/") != 0) - $destinationFolder .= "/"; + if (0 != strcmp(substr($destinationFolder, -1), '/')) { + $destinationFolder .= '/'; + } // Set the destination folder $this->destinationFolder = $destinationFolder; } - /** - * @param string $frameFileType - * @throws \FFMpeg\Exception\InvalidArgumentException - * @return ExtractMultipleFramesFilter - */ - public function setFrameFileType($frameFileType) { - if (in_array($frameFileType, self::$supportedFrameFileTypes)) { - $this->frameFileType = $frameFileType; - return $this; - } + /** + * @param string $frameFileType + * + * @throws \FFMpeg\Exception\InvalidArgumentException + * + * @return ExtractMultipleFramesFilter + */ + public function setFrameFileType($frameFileType) + { + if (in_array($frameFileType, self::$supportedFrameFileTypes)) { + $this->frameFileType = $frameFileType; - throw new InvalidArgumentException('Invalid frame file type, use: ' . implode(',', self::$supportedFrameFileTypes)); + return $this; + } + + throw new InvalidArgumentException('Invalid frame file type, use: '.implode(',', self::$supportedFrameFileTypes)); } /** @@ -96,7 +101,7 @@ class ExtractMultipleFramesFilter implements VideoFilterInterface */ public function apply(Video $video, VideoInterface $format) { - $commands = array(); + $commands = []; $duration = 0; try { @@ -108,37 +113,37 @@ class ExtractMultipleFramesFilter implements VideoFilterInterface } // Get the number of frames per second we have to extract. - if(preg_match('/(\d+)(?:\s*)([\+\-\*\/])(?:\s*)(\d+)/', $this->frameRate, $matches) !== FALSE){ + if (false !== preg_match('/(\d+)(?:\s*)([\+\-\*\/])(?:\s*)(\d+)/', $this->frameRate, $matches)) { $operator = $matches[2]; - switch($operator){ + switch ($operator) { case '/': $nbFramesPerSecond = $matches[1] / $matches[3]; break; default: - throw new InvalidArgumentException('The frame rate is not a proper division: ' . $this->frameRate); + throw new InvalidArgumentException('The frame rate is not a proper division: '.$this->frameRate); break; } } // Set the number of digits to use in the exported filenames - $nbImages = ceil( $duration * $nbFramesPerSecond ); + $nbImages = ceil($duration * $nbFramesPerSecond); - if($nbImages < 100) - $nbDigitsInFileNames = "02"; - elseif($nbImages < 1000) - $nbDigitsInFileNames = "03"; - else - $nbDigitsInFileNames = "06"; + if ($nbImages < 100) { + $nbDigitsInFileNames = '02'; + } elseif ($nbImages < 1000) { + $nbDigitsInFileNames = '03'; + } else { + $nbDigitsInFileNames = '06'; + } // Set the parameters $commands[] = '-vf'; - $commands[] = 'fps=' . $this->frameRate; - $commands[] = $this->destinationFolder . 'frame-%'.$nbDigitsInFileNames.'d.' . $this->frameFileType; - } - catch (RuntimeException $e) { - throw new RuntimeException('An error occured while extracting the frames: ' . $e->getMessage() . '. The code: ' . $e->getCode()); + $commands[] = 'fps='.$this->frameRate; + $commands[] = $this->destinationFolder.'frame-%'.$nbDigitsInFileNames.'d.'.$this->frameFileType; + } catch (RuntimeException $e) { + throw new RuntimeException('An error occured while extracting the frames: '.$e->getMessage().'. The code: '.$e->getCode()); } return $commands; diff --git a/src/FFMpeg/Filters/Video/FrameRateFilter.php b/src/FFMpeg/Filters/Video/FrameRateFilter.php index 3c3859c..47caaff 100644 --- a/src/FFMpeg/Filters/Video/FrameRateFilter.php +++ b/src/FFMpeg/Filters/Video/FrameRateFilter.php @@ -12,8 +12,8 @@ namespace FFMpeg\Filters\Video; use FFMpeg\Coordinate\FrameRate; -use FFMpeg\Media\Video; use FFMpeg\Format\VideoInterface; +use FFMpeg\Media\Video; class FrameRateFilter implements VideoFilterInterface { @@ -51,7 +51,7 @@ class FrameRateFilter implements VideoFilterInterface * * @see https://wikipedia.org/wiki/Group_of_pictures * - * @return Integer + * @return int */ public function getGOP() { @@ -63,9 +63,9 @@ class FrameRateFilter implements VideoFilterInterface */ public function apply(Video $video, VideoInterface $format) { - $commands = array('-r', $this->rate->getValue()); + $commands = ['-r', $this->rate->getValue()]; - /** + /* * @see http://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping */ if ($format->supportBFrames()) { diff --git a/src/FFMpeg/Filters/Video/PadFilter.php b/src/FFMpeg/Filters/Video/PadFilter.php index 24dbf17..dcb130c 100644 --- a/src/FFMpeg/Filters/Video/PadFilter.php +++ b/src/FFMpeg/Filters/Video/PadFilter.php @@ -87,13 +87,13 @@ class PadFilter implements VideoFilterInterface, ComplexCompatibleFilter */ protected function getCommands() { - $commands = array(); + $commands = []; $commands[] = '-vf'; - $commands[] = 'scale=iw*min(' . $this->dimension->getWidth() . '/iw\,' . $this->dimension->getHeight() - . '/ih):ih*min(' . $this->dimension->getWidth() . '/iw\,' . $this->dimension->getHeight() . '/ih),pad=' - . $this->dimension->getWidth() . ':' . $this->dimension->getHeight() . ':(' . $this->dimension->getWidth() - . '-iw)/2:(' . $this->dimension->getHeight() . '-ih)/2'; + $commands[] = 'scale=iw*min('.$this->dimension->getWidth().'/iw\,'.$this->dimension->getHeight() + .'/ih):ih*min('.$this->dimension->getWidth().'/iw\,'.$this->dimension->getHeight().'/ih),pad=' + .$this->dimension->getWidth().':'.$this->dimension->getHeight().':('.$this->dimension->getWidth() + .'-iw)/2:('.$this->dimension->getHeight().'-ih)/2'; return $commands; } diff --git a/src/FFMpeg/Filters/Video/ResizeFilter.php b/src/FFMpeg/Filters/Video/ResizeFilter.php index fbd375e..54d2cf5 100644 --- a/src/FFMpeg/Filters/Video/ResizeFilter.php +++ b/src/FFMpeg/Filters/Video/ResizeFilter.php @@ -13,19 +13,19 @@ namespace FFMpeg\Filters\Video; use FFMpeg\Coordinate\Dimension; use FFMpeg\Exception\RuntimeException; -use FFMpeg\Media\Video; use FFMpeg\Format\VideoInterface; +use FFMpeg\Media\Video; class ResizeFilter implements VideoFilterInterface { /** fits to the dimensions, might introduce anamorphosis */ - const RESIZEMODE_FIT = 'fit'; + public const RESIZEMODE_FIT = 'fit'; /** resizes the video inside the given dimension, no anamorphosis */ - const RESIZEMODE_INSET = 'inset'; + public const RESIZEMODE_INSET = 'inset'; /** resizes the video to fit the dimension width, no anamorphosis */ - const RESIZEMODE_SCALE_WIDTH = 'width'; + public const RESIZEMODE_SCALE_WIDTH = 'width'; /** resizes the video to fit the dimension height, no anamorphosis */ - const RESIZEMODE_SCALE_HEIGHT = 'height'; + public const RESIZEMODE_SCALE_HEIGHT = 'height'; /** @var Dimension */ private $dimension; @@ -82,7 +82,7 @@ class ResizeFilter implements VideoFilterInterface public function apply(Video $video, VideoInterface $format) { $dimensions = null; - $commands = array(); + $commands = []; foreach ($video->getStreams() as $stream) { if ($stream->isVideo()) { @@ -90,7 +90,6 @@ class ResizeFilter implements VideoFilterInterface $dimensions = $stream->getDimensions(); break; } catch (RuntimeException $e) { - } } } @@ -100,8 +99,7 @@ class ResizeFilter implements VideoFilterInterface // Using Filter to have ordering $commands[] = '-vf'; - $commands[] = '[in]scale=' . $dimensions->getWidth() . ':' . $dimensions->getHeight() . ' [out]'; - + $commands[] = '[in]scale='.$dimensions->getWidth().':'.$dimensions->getHeight().' [out]'; } return $commands; diff --git a/src/FFMpeg/Filters/Video/RotateFilter.php b/src/FFMpeg/Filters/Video/RotateFilter.php index 26ed3ea..497caa4 100644 --- a/src/FFMpeg/Filters/Video/RotateFilter.php +++ b/src/FFMpeg/Filters/Video/RotateFilter.php @@ -13,14 +13,14 @@ namespace FFMpeg\Filters\Video; use FFMpeg\Coordinate\Dimension; use FFMpeg\Exception\InvalidArgumentException; -use FFMpeg\Media\Video; use FFMpeg\Format\VideoInterface; +use FFMpeg\Media\Video; class RotateFilter implements VideoFilterInterface { - const ROTATE_90 = 'transpose=1'; - const ROTATE_180 = 'hflip,vflip'; - const ROTATE_270 = 'transpose=2'; + public const ROTATE_90 = 'transpose=1'; + public const ROTATE_180 = 'hflip,vflip'; + public const ROTATE_270 = 'transpose=2'; /** @var string */ private $angle; @@ -54,7 +54,7 @@ class RotateFilter implements VideoFilterInterface */ public function apply(Video $video, VideoInterface $format) { - if (in_array($this->angle, array(self::ROTATE_90, self::ROTATE_270), true)) { + if (in_array($this->angle, [self::ROTATE_90, self::ROTATE_270], true)) { foreach ($video->getStreams()->videos() as $stream) { if ($stream->has('width') && $stream->has('height')) { $width = $stream->get('width'); @@ -64,7 +64,7 @@ class RotateFilter implements VideoFilterInterface } } - return array('-vf', $this->angle, '-metadata:s:v:0', 'rotate=0'); + return ['-vf', $this->angle, '-metadata:s:v:0', 'rotate=0']; } private function setAngle($angle) diff --git a/src/FFMpeg/Filters/Video/SynchronizeFilter.php b/src/FFMpeg/Filters/Video/SynchronizeFilter.php index 97a4043..c9c2473 100644 --- a/src/FFMpeg/Filters/Video/SynchronizeFilter.php +++ b/src/FFMpeg/Filters/Video/SynchronizeFilter.php @@ -39,6 +39,6 @@ class SynchronizeFilter implements VideoFilterInterface */ public function apply(Video $video, VideoInterface $format) { - return array('-async', '1', '-metadata:s:v:0', 'start_time=0'); + return ['-async', '1', '-metadata:s:v:0', 'start_time=0']; } } diff --git a/src/FFMpeg/Filters/Video/VideoFilterInterface.php b/src/FFMpeg/Filters/Video/VideoFilterInterface.php index f4cbbcb..192cf37 100644 --- a/src/FFMpeg/Filters/Video/VideoFilterInterface.php +++ b/src/FFMpeg/Filters/Video/VideoFilterInterface.php @@ -20,9 +20,6 @@ interface VideoFilterInterface extends FilterInterface /** * Applies the filter on the the Video media given an format. * - * @param Video $video - * @param VideoInterface $format - * * @return array An array of arguments */ public function apply(Video $video, VideoInterface $format); diff --git a/src/FFMpeg/Filters/Video/VideoFilters.php b/src/FFMpeg/Filters/Video/VideoFilters.php index d633b04..2c724de 100644 --- a/src/FFMpeg/Filters/Video/VideoFilters.php +++ b/src/FFMpeg/Filters/Video/VideoFilters.php @@ -11,13 +11,13 @@ namespace FFMpeg\Filters\Video; -use FFMpeg\Coordinate\Point; -use FFMpeg\Media\Video; -use FFMpeg\Coordinate\TimeCode; use FFMpeg\Coordinate\Dimension; use FFMpeg\Coordinate\FrameRate; -use FFMpeg\Filters\Audio\AudioResamplableFilter; +use FFMpeg\Coordinate\Point; +use FFMpeg\Coordinate\TimeCode; use FFMpeg\Filters\Audio\AudioFilters; +use FFMpeg\Filters\Audio\AudioResamplableFilter; +use FFMpeg\Media\Video; class VideoFilters extends AudioFilters { @@ -29,8 +29,7 @@ class VideoFilters extends AudioFilters /** * Resizes a video to a given dimension. * - * @param Dimension $dimension - * @param string $mode + * @param string $mode * @param bool $forceStandards * * @return VideoFilters @@ -45,8 +44,7 @@ class VideoFilters extends AudioFilters /** * Changes the video framerate. * - * @param FrameRate $framerate - * @param Integer $gop + * @param int $gop * * @return VideoFilters */ @@ -58,10 +56,10 @@ class VideoFilters extends AudioFilters } /** - * Extract multiple frames from the video + * Extract multiple frames from the video. * * @param string $frameRate - * @param string $destinationFolder + * @param string $destinationFolder * * @return $this */ @@ -102,7 +100,7 @@ class VideoFilters extends AudioFilters /** * Resamples the audio file. * - * @param Integer $rate + * @param int $rate * * @return AudioFilters */ @@ -116,8 +114,6 @@ class VideoFilters extends AudioFilters /** * Adds padding (black bars) to a video. * - * @param Dimension $dimension - * * @return VideoFilters */ public function pad(Dimension $dimension) @@ -135,10 +131,7 @@ class VideoFilters extends AudioFilters } /** - * Crops the video - * - * @param Point $point - * @param Dimension $dimension + * Crops the video. * * @return VideoFilters */ @@ -151,11 +144,10 @@ class VideoFilters extends AudioFilters /** * @param string $imagePath - * @param array $coordinates * * @return $this */ - public function watermark($imagePath, array $coordinates = array()) + public function watermark($imagePath, array $coordinates = []) { $this->media->addFilter(new WatermarkFilter($imagePath, $coordinates)); @@ -163,9 +155,9 @@ class VideoFilters extends AudioFilters } /** - * Applies a custom filter: -vf foo bar + * Applies a custom filter: -vf foo bar. * - * @param string $parameters + * @param string $parameters * * @return VideoFilters */ diff --git a/src/FFMpeg/Filters/Video/WatermarkFilter.php b/src/FFMpeg/Filters/Video/WatermarkFilter.php index 19d0422..e70cffb 100644 --- a/src/FFMpeg/Filters/Video/WatermarkFilter.php +++ b/src/FFMpeg/Filters/Video/WatermarkFilter.php @@ -26,7 +26,7 @@ class WatermarkFilter implements VideoFilterInterface, ComplexCompatibleFilter /** @var int */ private $priority; - public function __construct($watermarkPath, array $coordinates = array(), $priority = 0) + public function __construct($watermarkPath, array $coordinates = [], $priority = 0) { if (!file_exists($watermarkPath)) { throw new InvalidArgumentException(sprintf('File %s does not exist', $watermarkPath)); @@ -93,7 +93,7 @@ class WatermarkFilter implements VideoFilterInterface, ComplexCompatibleFilter if (isset($this->coordinates['top'])) { $y = $this->coordinates['top']; } elseif (isset($this->coordinates['bottom'])) { - $y = 'main_h - ' . $this->coordinates['bottom'] . ' - overlay_h'; + $y = 'main_h - '.$this->coordinates['bottom'].' - overlay_h'; } else { $y = 0; } @@ -101,7 +101,7 @@ class WatermarkFilter implements VideoFilterInterface, ComplexCompatibleFilter if (isset($this->coordinates['left'])) { $x = $this->coordinates['left']; } elseif (isset($this->coordinates['right'])) { - $x = 'main_w - ' . $this->coordinates['right'] . ' - overlay_w'; + $x = 'main_w - '.$this->coordinates['right'].' - overlay_w'; } else { $x = 0; } @@ -113,9 +113,9 @@ class WatermarkFilter implements VideoFilterInterface, ComplexCompatibleFilter break; } - return array( + return [ '-vf', - 'movie=' . $this->watermarkPath . ' [watermark]; [in][watermark] overlay=' . $x . ':' . $y . ' [out]', - ); + 'movie='.$this->watermarkPath.' [watermark]; [in][watermark] overlay='.$x.':'.$y.' [out]', + ]; } } diff --git a/src/FFMpeg/Filters/Waveform/WaveformDownmixFilter.php b/src/FFMpeg/Filters/Waveform/WaveformDownmixFilter.php index b16e99d..d6e5186 100644 --- a/src/FFMpeg/Filters/Waveform/WaveformDownmixFilter.php +++ b/src/FFMpeg/Filters/Waveform/WaveformDownmixFilter.php @@ -16,14 +16,13 @@ use FFMpeg\Media\Waveform; class WaveformDownmixFilter implements WaveformFilterInterface { - /** @var bool */ private $downmix; /** @var int */ private $priority; // By default, the downmix value is set to FALSE. - public function __construct($downmix = FALSE, $priority = 0) + public function __construct($downmix = false, $priority = 0) { $this->downmix = $downmix; $this->priority = $priority; @@ -50,21 +49,18 @@ class WaveformDownmixFilter implements WaveformFilterInterface */ public function apply(Waveform $waveform) { - $commands = array(); + $commands = []; foreach ($waveform->getAudio()->getStreams() as $stream) { if ($stream->isAudio()) { try { - // If the downmix parameter is set to TRUE, we add an option to the FFMPEG command - if($this->downmix == TRUE) { + if (true == $this->downmix) { $commands[] = '"aformat=channel_layouts=mono"'; } - + break; - } catch (RuntimeException $e) { - } } } diff --git a/src/FFMpeg/Format/Audio/Aac.php b/src/FFMpeg/Format/Audio/Aac.php index a9eebde..9d21308 100644 --- a/src/FFMpeg/Format/Audio/Aac.php +++ b/src/FFMpeg/Format/Audio/Aac.php @@ -12,7 +12,7 @@ namespace FFMpeg\Format\Audio; /** - * The AAC audio format + * The AAC audio format. */ class Aac extends DefaultAudio { @@ -26,6 +26,6 @@ class Aac extends DefaultAudio */ public function getAvailableAudioCodecs() { - return array('libfdk_aac'); + return ['libfdk_aac']; } } diff --git a/src/FFMpeg/Format/Audio/DefaultAudio.php b/src/FFMpeg/Format/Audio/DefaultAudio.php index 09856db..cc41594 100644 --- a/src/FFMpeg/Format/Audio/DefaultAudio.php +++ b/src/FFMpeg/Format/Audio/DefaultAudio.php @@ -13,11 +13,11 @@ namespace FFMpeg\Format\Audio; use Evenement\EventEmitter; use FFMpeg\Exception\InvalidArgumentException; +use FFMpeg\FFProbe; use FFMpeg\Format\AudioInterface; -use FFMpeg\Media\MediaTypeInterface; use FFMpeg\Format\ProgressableInterface; use FFMpeg\Format\ProgressListener\AudioProgressListener; -use FFMpeg\FFProbe; +use FFMpeg\Media\MediaTypeInterface; abstract class DefaultAudio extends EventEmitter implements AudioInterface, ProgressableInterface { @@ -35,7 +35,7 @@ abstract class DefaultAudio extends EventEmitter implements AudioInterface, Prog */ public function getExtraParams() { - return array(); + return []; } /** @@ -56,11 +56,8 @@ abstract class DefaultAudio extends EventEmitter implements AudioInterface, Prog */ public function setAudioCodec($audioCodec) { - if ( ! in_array($audioCodec, $this->getAvailableAudioCodecs())) { - throw new InvalidArgumentException(sprintf( - 'Wrong audiocodec value for %s, available formats are %s' - , $audioCodec, implode(', ', $this->getAvailableAudioCodecs()) - )); + if (!in_array($audioCodec, $this->getAvailableAudioCodecs())) { + throw new InvalidArgumentException(sprintf('Wrong audiocodec value for %s, available formats are %s', $audioCodec, implode(', ', $this->getAvailableAudioCodecs()))); } $this->audioCodec = $audioCodec; @@ -79,7 +76,8 @@ abstract class DefaultAudio extends EventEmitter implements AudioInterface, Prog /** * Sets the kiloBitrate value. * - * @param int $kiloBitrate + * @param int $kiloBitrate + * * @throws InvalidArgumentException */ public function setAudioKiloBitrate($kiloBitrate) @@ -94,8 +92,8 @@ abstract class DefaultAudio extends EventEmitter implements AudioInterface, Prog } /** - * {@inheritdoc} - */ + * {@inheritdoc} + */ public function getAudioChannels() { return $this->audioChannels; @@ -104,7 +102,8 @@ abstract class DefaultAudio extends EventEmitter implements AudioInterface, Prog /** * Sets the channels value. * - * @param int $channels + * @param int $channels + * * @throws InvalidArgumentException */ public function setAudioChannels($channels) @@ -126,10 +125,10 @@ abstract class DefaultAudio extends EventEmitter implements AudioInterface, Prog $format = $this; $listener = new AudioProgressListener($ffprobe, $media->getPathfile(), $pass, $total, $duration); $listener->on('progress', function () use ($media, $format) { - $format->emit('progress', array_merge(array($media, $format), func_get_args())); + $format->emit('progress', array_merge([$media, $format], func_get_args())); }); - return array($listener); + return [$listener]; } /** diff --git a/src/FFMpeg/Format/Audio/Flac.php b/src/FFMpeg/Format/Audio/Flac.php index 28a7197..a2faccb 100644 --- a/src/FFMpeg/Format/Audio/Flac.php +++ b/src/FFMpeg/Format/Audio/Flac.php @@ -12,7 +12,7 @@ namespace FFMpeg\Format\Audio; /** - * The Flac audio format + * The Flac audio format. */ class Flac extends DefaultAudio { @@ -26,6 +26,6 @@ class Flac extends DefaultAudio */ public function getAvailableAudioCodecs() { - return array('flac'); + return ['flac']; } } diff --git a/src/FFMpeg/Format/Audio/Mp3.php b/src/FFMpeg/Format/Audio/Mp3.php index 4cd86f5..bc5c373 100644 --- a/src/FFMpeg/Format/Audio/Mp3.php +++ b/src/FFMpeg/Format/Audio/Mp3.php @@ -12,7 +12,7 @@ namespace FFMpeg\Format\Audio; /** - * The MP3 audio format + * The MP3 audio format. */ class Mp3 extends DefaultAudio { @@ -26,6 +26,6 @@ class Mp3 extends DefaultAudio */ public function getAvailableAudioCodecs() { - return array('libmp3lame'); + return ['libmp3lame']; } } diff --git a/src/FFMpeg/Format/Audio/Vorbis.php b/src/FFMpeg/Format/Audio/Vorbis.php index fd241fd..4cb1def 100644 --- a/src/FFMpeg/Format/Audio/Vorbis.php +++ b/src/FFMpeg/Format/Audio/Vorbis.php @@ -12,7 +12,7 @@ namespace FFMpeg\Format\Audio; /** - * The Vorbis audio format + * The Vorbis audio format. */ class Vorbis extends DefaultAudio { @@ -26,7 +26,7 @@ class Vorbis extends DefaultAudio */ public function getExtraParams() { - return array('-strict', '-2'); + return ['-strict', '-2']; } /** @@ -34,6 +34,6 @@ class Vorbis extends DefaultAudio */ public function getAvailableAudioCodecs() { - return array('vorbis'); + return ['vorbis']; } } diff --git a/src/FFMpeg/Format/Audio/Wav.php b/src/FFMpeg/Format/Audio/Wav.php index 8670599..04a444c 100644 --- a/src/FFMpeg/Format/Audio/Wav.php +++ b/src/FFMpeg/Format/Audio/Wav.php @@ -12,7 +12,7 @@ namespace FFMpeg\Format\Audio; /** - * The WAV audio format + * The WAV audio format. */ class Wav extends DefaultAudio { @@ -26,6 +26,6 @@ class Wav extends DefaultAudio */ public function getAvailableAudioCodecs() { - return array('pcm_s16le'); + return ['pcm_s16le']; } } diff --git a/src/FFMpeg/Format/AudioInterface.php b/src/FFMpeg/Format/AudioInterface.php index 41068f8..4aeaa54 100644 --- a/src/FFMpeg/Format/AudioInterface.php +++ b/src/FFMpeg/Format/AudioInterface.php @@ -8,6 +8,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + namespace FFMpeg\Format; interface AudioInterface extends FormatInterface diff --git a/src/FFMpeg/Format/FormatInterface.php b/src/FFMpeg/Format/FormatInterface.php index 39f3ab6..86a341b 100644 --- a/src/FFMpeg/Format/FormatInterface.php +++ b/src/FFMpeg/Format/FormatInterface.php @@ -8,6 +8,7 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + namespace FFMpeg\Format; interface FormatInterface diff --git a/src/FFMpeg/Format/ProgressListener/AbstractProgressListener.php b/src/FFMpeg/Format/ProgressListener/AbstractProgressListener.php index 8739540..c149045 100644 --- a/src/FFMpeg/Format/ProgressListener/AbstractProgressListener.php +++ b/src/FFMpeg/Format/ProgressListener/AbstractProgressListener.php @@ -13,8 +13,8 @@ namespace FFMpeg\Format\ProgressListener; use Alchemy\BinaryDriver\Listeners\ListenerInterface; use Evenement\EventEmitter; -use FFMpeg\FFProbe; use FFMpeg\Exception\RuntimeException; +use FFMpeg\FFProbe; /** * @author Robert Gruendler @@ -33,7 +33,7 @@ abstract class AbstractProgressListener extends EventEmitter implements Listener /** @var int */ private $currentTime; - /** @var double */ + /** @var float */ private $lastOutput = null; /** @var FFProbe */ @@ -52,32 +52,31 @@ abstract class AbstractProgressListener extends EventEmitter implements Listener private $totalPass; /** - * Transcoding rate in kb/s + * Transcoding rate in kb/s. * * @var int */ private $rate; /** - * Percentage of transcoding progress (0 - 100) + * Percentage of transcoding progress (0 - 100). * * @var int */ private $percent = 0; /** - * Time remaining (seconds) + * Time remaining (seconds). * * @var int */ private $remaining = null; /** - * @param FFProbe $ffprobe * @param string $pathfile - * @param int $currentPass The current pass number - * @param int $totalPass The total number of passes - * @param int $duration + * @param int $currentPass The current pass number + * @param int $totalPass The total number of passes + * @param int $duration */ public function __construct(FFProbe $ffprobe, $pathfile, $currentPass, $totalPass, $duration = 0) { @@ -143,18 +142,18 @@ abstract class AbstractProgressListener extends EventEmitter implements Listener */ public function forwardedEvents() { - return array(); + return []; } /** - * Get the regex pattern to match a ffmpeg stderr status line + * Get the regex pattern to match a ffmpeg stderr status line. */ abstract protected function getPattern(); /** * @param string $progress A ffmpeg stderr progress output * - * @return array the progressinfo array or null if there's no progress available yet. + * @return array the progressinfo array or null if there's no progress available yet */ private function parseProgress($progress) { @@ -166,9 +165,9 @@ abstract class AbstractProgressListener extends EventEmitter implements Listener return; } - $matches = array(); + $matches = []; - if (preg_match($this->getPattern(), $progress, $matches) !== 1) { + if (1 !== preg_match($this->getPattern(), $progress, $matches)) { return null; } @@ -177,12 +176,12 @@ abstract class AbstractProgressListener extends EventEmitter implements Listener $currentSize = trim(str_replace('kb', '', strtolower(($matches[1])))); $percent = max(0, min(1, $currentDuration / $this->duration)); - if ($this->lastOutput !== null) { + if (null !== $this->lastOutput) { $delta = $currentTime - $this->lastOutput; // Check the type of the currentSize variable and convert it to an integer if needed. - if(!is_numeric($currentSize)) { - $currentSize = (int)$currentSize; + if (!is_numeric($currentSize)) { + $currentSize = (int) $currentSize; } $deltaSize = $currentSize - $this->currentSize; @@ -208,13 +207,13 @@ abstract class AbstractProgressListener extends EventEmitter implements Listener } /** + * @param string $rawDuration in the format 00:00:00.00 * - * @param string $rawDuration in the format 00:00:00.00 * @return number */ private function convertDuration($rawDuration) { - $ar = array_reverse(explode(":", $rawDuration)); + $ar = array_reverse(explode(':', $rawDuration)); $duration = floatval($ar[0]); if (!empty($ar[1])) { $duration += intval($ar[1]) * 60; @@ -231,15 +230,15 @@ abstract class AbstractProgressListener extends EventEmitter implements Listener */ private function getProgressInfo() { - if ($this->remaining === null) { + if (null === $this->remaining) { return null; } - return array( - 'percent' => $this->percent, + return [ + 'percent' => $this->percent, 'remaining' => $this->remaining, - 'rate' => $this->rate - ); + 'rate' => $this->rate, + ]; } private function initialize() diff --git a/src/FFMpeg/Format/ProgressListener/AudioProgressListener.php b/src/FFMpeg/Format/ProgressListener/AudioProgressListener.php index 7fbb0bb..77ecf46 100644 --- a/src/FFMpeg/Format/ProgressListener/AudioProgressListener.php +++ b/src/FFMpeg/Format/ProgressListener/AudioProgressListener.php @@ -12,7 +12,7 @@ namespace FFMpeg\Format\ProgressListener; /** - * Parses ffmpeg stderr progress information. An example: + * Parses ffmpeg stderr progress information. An example:. * *
  *       size=    3552kB time=00:03:47.29 bitrate= 128.0kbits/s
diff --git a/src/FFMpeg/Format/ProgressListener/VideoProgressListener.php b/src/FFMpeg/Format/ProgressListener/VideoProgressListener.php
index 6bfa4a1..b26c4bb 100644
--- a/src/FFMpeg/Format/ProgressListener/VideoProgressListener.php
+++ b/src/FFMpeg/Format/ProgressListener/VideoProgressListener.php
@@ -12,7 +12,7 @@
 namespace FFMpeg\Format\ProgressListener;
 
 /**
- * Parses ffmpeg stderr progress information for video files. An example:
+ * Parses ffmpeg stderr progress information for video files. An example:.
  *
  * 
  *       frame=  171 fps=0.0 q=10.0 size=      18kB time=00:00:05.72 bitrate=  26.4kbits/s dup=8 drop=0
diff --git a/src/FFMpeg/Format/ProgressableInterface.php b/src/FFMpeg/Format/ProgressableInterface.php
index 497849c..9412fec 100644
--- a/src/FFMpeg/Format/ProgressableInterface.php
+++ b/src/FFMpeg/Format/ProgressableInterface.php
@@ -20,11 +20,9 @@ interface ProgressableInterface extends EventEmitterInterface
     /**
      * Creates the progress listener.
      *
-     * @param MediaTypeInterface $media
-     * @param FFProbe            $ffprobe
-     * @param Integer            $pass    The current pas snumber
-     * @param Integer            $total   The total pass number
-     * @param Integer            $duration   The new video duration
+     * @param int $pass     The current pas snumber
+     * @param int $total    The total pass number
+     * @param int $duration The new video duration
      *
      * @return array An array of listeners
      */
diff --git a/src/FFMpeg/Format/Video/DefaultVideo.php b/src/FFMpeg/Format/Video/DefaultVideo.php
index 733df44..e9a32e7 100644
--- a/src/FFMpeg/Format/Video/DefaultVideo.php
+++ b/src/FFMpeg/Format/Video/DefaultVideo.php
@@ -11,31 +11,31 @@
 
 namespace FFMpeg\Format\Video;
 
-use FFMpeg\FFProbe;
 use FFMpeg\Exception\InvalidArgumentException;
+use FFMpeg\FFProbe;
 use FFMpeg\Format\Audio\DefaultAudio;
+use FFMpeg\Format\ProgressListener\VideoProgressListener;
 use FFMpeg\Format\VideoInterface;
 use FFMpeg\Media\MediaTypeInterface;
-use FFMpeg\Format\ProgressListener\VideoProgressListener;
 
 /**
- * The abstract default Video format
+ * The abstract default Video format.
  */
 abstract class DefaultVideo extends DefaultAudio implements VideoInterface
 {
     /** @var string */
     protected $videoCodec;
 
-    /** @var Integer */
+    /** @var int */
     protected $kiloBitrate = 1000;
 
-    /** @var Integer */
+    /** @var int */
     protected $modulus = 16;
 
-    /** @var Array */
+    /** @var array */
     protected $additionalParamaters;
 
-    /** @var Array */
+    /** @var array */
     protected $initialParamaters;
 
     /**
@@ -49,7 +49,8 @@ abstract class DefaultVideo extends DefaultAudio implements VideoInterface
     /**
      * Sets the kiloBitrate value.
      *
-     * @param  int                  $kiloBitrate
+     * @param int $kiloBitrate
+     *
      * @throws InvalidArgumentException
      */
     public function setKiloBitrate($kiloBitrate)
@@ -75,16 +76,14 @@ abstract class DefaultVideo extends DefaultAudio implements VideoInterface
      * Sets the video codec, Should be in the available ones, otherwise an
      * exception is thrown.
      *
-     * @param  string                   $videoCodec
+     * @param string $videoCodec
+     *
      * @throws InvalidArgumentException
      */
     public function setVideoCodec($videoCodec)
     {
-        if ( ! in_array($videoCodec, $this->getAvailableVideoCodecs())) {
-            throw new InvalidArgumentException(sprintf(
-                    'Wrong videocodec value for %s, available formats are %s'
-                    , $videoCodec, implode(', ', $this->getAvailableVideoCodecs())
-            ));
+        if (!in_array($videoCodec, $this->getAvailableVideoCodecs())) {
+            throw new InvalidArgumentException(sprintf('Wrong videocodec value for %s, available formats are %s', $videoCodec, implode(', ', $this->getAvailableVideoCodecs())));
         }
 
         $this->videoCodec = $videoCodec;
@@ -111,7 +110,8 @@ abstract class DefaultVideo extends DefaultAudio implements VideoInterface
     /**
      * Sets additional parameters.
      *
-     * @param  array                    $additionalParamaters
+     * @param array $additionalParamaters
+     *
      * @throws InvalidArgumentException
      */
     public function setAdditionalParameters($additionalParamaters)
@@ -136,7 +136,8 @@ abstract class DefaultVideo extends DefaultAudio implements VideoInterface
     /**
      * Sets initial parameters.
      *
-     * @param  array                    $initialParamaters
+     * @param array $initialParamaters
+     *
      * @throws InvalidArgumentException
      */
     public function setInitialParameters($initialParamaters)
@@ -156,11 +157,11 @@ abstract class DefaultVideo extends DefaultAudio implements VideoInterface
     public function createProgressListener(MediaTypeInterface $media, FFProbe $ffprobe, $pass, $total, $duration = 0)
     {
         $format = $this;
-        $listeners = array(new VideoProgressListener($ffprobe, $media->getPathfile(), $pass, $total, $duration));
+        $listeners = [new VideoProgressListener($ffprobe, $media->getPathfile(), $pass, $total, $duration)];
 
         foreach ($listeners as $listener) {
             $listener->on('progress', function () use ($format, $media) {
-               $format->emit('progress', array_merge(array($media, $format), func_get_args()));
+                $format->emit('progress', array_merge([$media, $format], func_get_args()));
             });
         }
 
diff --git a/src/FFMpeg/Format/Video/Ogg.php b/src/FFMpeg/Format/Video/Ogg.php
index b67fd68..62861bb 100644
--- a/src/FFMpeg/Format/Video/Ogg.php
+++ b/src/FFMpeg/Format/Video/Ogg.php
@@ -12,7 +12,7 @@
 namespace FFMpeg\Format\Video;
 
 /**
- * The Ogg video format
+ * The Ogg video format.
  */
 class Ogg extends DefaultVideo
 {
@@ -36,7 +36,7 @@ class Ogg extends DefaultVideo
      */
     public function getAvailableAudioCodecs()
     {
-        return array('libvorbis');
+        return ['libvorbis'];
     }
 
     /**
@@ -44,6 +44,6 @@ class Ogg extends DefaultVideo
      */
     public function getAvailableVideoCodecs()
     {
-        return array('libtheora');
+        return ['libtheora'];
     }
 }
diff --git a/src/FFMpeg/Format/Video/WMV.php b/src/FFMpeg/Format/Video/WMV.php
index 56c170e..ea803e5 100644
--- a/src/FFMpeg/Format/Video/WMV.php
+++ b/src/FFMpeg/Format/Video/WMV.php
@@ -12,7 +12,7 @@
 namespace FFMpeg\Format\Video;
 
 /**
- * The WMV video format
+ * The WMV video format.
  */
 class WMV extends DefaultVideo
 {
@@ -36,7 +36,7 @@ class WMV extends DefaultVideo
      */
     public function getAvailableAudioCodecs()
     {
-        return array('wmav2');
+        return ['wmav2'];
     }
 
     /**
@@ -44,6 +44,6 @@ class WMV extends DefaultVideo
      */
     public function getAvailableVideoCodecs()
     {
-        return array('wmv2');
+        return ['wmv2'];
     }
 }
diff --git a/src/FFMpeg/Format/Video/WMV3.php b/src/FFMpeg/Format/Video/WMV3.php
index 575936e..2ddf225 100644
--- a/src/FFMpeg/Format/Video/WMV3.php
+++ b/src/FFMpeg/Format/Video/WMV3.php
@@ -12,7 +12,7 @@
 namespace FFMpeg\Format\Video;
 
 /**
- * The WMV video format
+ * The WMV video format.
  */
 class WMV3 extends DefaultVideo
 {
@@ -36,7 +36,7 @@ class WMV3 extends DefaultVideo
      */
     public function getAvailableAudioCodecs()
     {
-        return array('wmav3');
+        return ['wmav3'];
     }
 
     /**
@@ -44,6 +44,6 @@ class WMV3 extends DefaultVideo
      */
     public function getAvailableVideoCodecs()
     {
-        return array('wmv3');
+        return ['wmv3'];
     }
 }
diff --git a/src/FFMpeg/Format/Video/WebM.php b/src/FFMpeg/Format/Video/WebM.php
index 59bab20..8d75f18 100644
--- a/src/FFMpeg/Format/Video/WebM.php
+++ b/src/FFMpeg/Format/Video/WebM.php
@@ -12,7 +12,7 @@
 namespace FFMpeg\Format\Video;
 
 /**
- * The WebM video format
+ * The WebM video format.
  */
 class WebM extends DefaultVideo
 {
@@ -36,7 +36,7 @@ class WebM extends DefaultVideo
      */
     public function getExtraParams()
     {
-        return array('-f', 'webm');
+        return ['-f', 'webm'];
     }
 
     /**
@@ -44,7 +44,7 @@ class WebM extends DefaultVideo
      */
     public function getAvailableAudioCodecs()
     {
-        return array('copy', 'libvorbis');
+        return ['copy', 'libvorbis'];
     }
 
     /**
@@ -52,6 +52,6 @@ class WebM extends DefaultVideo
      */
     public function getAvailableVideoCodecs()
     {
-        return array('libvpx', 'libvpx-vp9');
+        return ['libvpx', 'libvpx-vp9'];
     }
 }
diff --git a/src/FFMpeg/Format/Video/X264.php b/src/FFMpeg/Format/Video/X264.php
index c6cfb41..668637a 100644
--- a/src/FFMpeg/Format/Video/X264.php
+++ b/src/FFMpeg/Format/Video/X264.php
@@ -12,7 +12,7 @@
 namespace FFMpeg\Format\Video;
 
 /**
- * The X264 video format
+ * The X264 video format.
  */
 class X264 extends DefaultVideo
 {
@@ -54,7 +54,7 @@ class X264 extends DefaultVideo
      */
     public function getAvailableAudioCodecs()
     {
-        return array('copy', 'aac', 'libvo_aacenc', 'libfaac', 'libmp3lame', 'libfdk_aac');
+        return ['copy', 'aac', 'libvo_aacenc', 'libfaac', 'libmp3lame', 'libfdk_aac'];
     }
 
     /**
@@ -62,7 +62,7 @@ class X264 extends DefaultVideo
      */
     public function getAvailableVideoCodecs()
     {
-        return array('libx264');
+        return ['libx264'];
     }
 
     /**
@@ -73,6 +73,7 @@ class X264 extends DefaultVideo
     public function setPasses($passes)
     {
         $this->passes = $passes;
+
         return $this;
     }
 
@@ -81,7 +82,7 @@ class X264 extends DefaultVideo
      */
     public function getPasses()
     {
-        return $this->getKiloBitrate() === 0 ? 1 : $this->passes;
+        return 0 === $this->getKiloBitrate() ? 1 : $this->passes;
     }
 
     /**
diff --git a/src/FFMpeg/Format/VideoInterface.php b/src/FFMpeg/Format/VideoInterface.php
index eb810a3..83a44cd 100644
--- a/src/FFMpeg/Format/VideoInterface.php
+++ b/src/FFMpeg/Format/VideoInterface.php
@@ -63,7 +63,7 @@ interface VideoInterface extends AudioInterface
     public function getAdditionalParameters();
 
     /**
-     * Returns the list of initial parameters for this format
+     * Returns the list of initial parameters for this format.
      *
      * @return array
      */
diff --git a/src/FFMpeg/Media/AbstractMediaType.php b/src/FFMpeg/Media/AbstractMediaType.php
index 5523c0b..2b3ef0c 100644
--- a/src/FFMpeg/Media/AbstractMediaType.php
+++ b/src/FFMpeg/Media/AbstractMediaType.php
@@ -43,8 +43,6 @@ abstract class AbstractMediaType implements MediaTypeInterface
     }
 
     /**
-     * @param FFMpegDriver $driver
-     *
      * @return MediaTypeInterface
      */
     public function setFFMpegDriver(FFMpegDriver $driver)
@@ -63,8 +61,6 @@ abstract class AbstractMediaType implements MediaTypeInterface
     }
 
     /**
-     * @param FFProbe $ffprobe
-     *
      * @return MediaTypeInterface
      */
     public function setFFProbe(FFProbe $ffprobe)
@@ -83,8 +79,6 @@ abstract class AbstractMediaType implements MediaTypeInterface
     }
 
     /**
-     * @param FiltersCollection $filters
-     *
      * @return MediaTypeInterface
      */
     public function setFiltersCollection(FiltersCollection $filters)
diff --git a/src/FFMpeg/Media/AbstractVideo.php b/src/FFMpeg/Media/AbstractVideo.php
index 1f68dad..e2a057f 100644
--- a/src/FFMpeg/Media/AbstractVideo.php
+++ b/src/FFMpeg/Media/AbstractVideo.php
@@ -1,4 +1,5 @@
 getDuration() === NULL) {
+                            if (null === $filter->getDuration()) {
                                 continue;
                             }
-                            
+
                             $duration = $filter->getDuration()->toSeconds();
                             break;
                         }
@@ -104,7 +110,7 @@ abstract class AbstractVideo extends Audio
             }
         }
 
-        $this->fs->clean($this->fsId);
+        $this->fs->delete();
 
         if (null !== $failure) {
             throw new RuntimeException('Encoding failed', $failure->getCode(), $failure);
@@ -115,17 +121,17 @@ abstract class AbstractVideo extends Audio
 
     /**
      * NOTE: This method is different to the Audio's one, because Video is using passes.
-     * @inheritDoc
+     * {@inheritDoc}
      */
     public function getFinalCommand(FormatInterface $format, $outputPathfile)
     {
-        $finalCommands = array();
+        $finalCommands = [];
 
         foreach ($this->buildCommand($format, $outputPathfile) as $pass => $passCommands) {
             $finalCommands[] = implode(' ', $passCommands);
         }
 
-        $this->fs->clean($this->fsId);
+        $this->fs->delete();
 
         return $finalCommands;
     }
@@ -133,7 +139,8 @@ abstract class AbstractVideo extends Audio
     /**
      * **NOTE:** This creates passes instead of a single command!
      *
-     * @inheritDoc
+     * {@inheritDoc}
+     *
      * @return string[][]
      */
     protected function buildCommand(FormatInterface $format, $outputPathfile)
@@ -144,16 +151,16 @@ abstract class AbstractVideo extends Audio
         $filters->add(new SimpleFilter($format->getExtraParams(), 10));
 
         if ($this->driver->getConfiguration()->has('ffmpeg.threads')) {
-            $filters->add(new SimpleFilter(array('-threads', $this->driver->getConfiguration()->get('ffmpeg.threads'))));
+            $filters->add(new SimpleFilter(['-threads', $this->driver->getConfiguration()->get('ffmpeg.threads')]));
         }
         if ($format instanceof VideoInterface) {
             if (null !== $format->getVideoCodec()) {
-                $filters->add(new SimpleFilter(array('-vcodec', $format->getVideoCodec())));
+                $filters->add(new SimpleFilter(['-vcodec', $format->getVideoCodec()]));
             }
         }
         if ($format instanceof AudioInterface) {
             if (null !== $format->getAudioCodec()) {
-                $filters->add(new SimpleFilter(array('-acodec', $format->getAudioCodec())));
+                $filters->add(new SimpleFilter(['-acodec', $format->getAudioCodec()]));
             }
         }
 
@@ -162,9 +169,9 @@ abstract class AbstractVideo extends Audio
         }
 
         if ($format instanceof VideoInterface) {
-            if ($format->getKiloBitrate() !== 0) {
+            if (0 !== $format->getKiloBitrate()) {
                 $commands[] = '-b:v';
-                $commands[] = $format->getKiloBitrate() . 'k';
+                $commands[] = $format->getKiloBitrate().'k';
             }
 
             $commands[] = '-refs';
@@ -192,7 +199,7 @@ abstract class AbstractVideo extends Audio
         if ($format instanceof AudioInterface) {
             if (null !== $format->getAudioKiloBitrate()) {
                 $commands[] = '-b:a';
-                $commands[] = $format->getAudioKiloBitrate() . 'k';
+                $commands[] = $format->getAudioKiloBitrate().'k';
             }
             if (null !== $format->getAudioChannels()) {
                 $commands[] = '-ac';
@@ -210,12 +217,12 @@ abstract class AbstractVideo extends Audio
         }
 
         // Merge Filters into one command
-        $videoFilterVars = $videoFilterProcesses = array();
-        for ($i = 0; $i < count($commands); $i++) {
+        $videoFilterVars = $videoFilterProcesses = [];
+        for ($i = 0; $i < count($commands); ++$i) {
             $command = $commands[$i];
-            if ($command === '-vf') {
-                $commandSplits = explode(";", $commands[$i + 1]);
-                if (count($commandSplits) == 1) {
+            if ('-vf' === $command) {
+                $commandSplits = explode(';', $commands[$i + 1]);
+                if (1 == count($commandSplits)) {
                     $commandSplit = $commandSplits[0];
                     $command = trim($commandSplit);
                     if (preg_match("/^\[in\](.*?)\[out\]$/is", $command, $match)) {
@@ -235,19 +242,19 @@ abstract class AbstractVideo extends Audio
                 }
                 unset($commands[$i]);
                 unset($commands[$i + 1]);
-                $i++;
+                ++$i;
             }
         }
         $videoFilterCommands = $videoFilterVars;
         $lastInput = 'in';
         foreach ($videoFilterProcesses as $i => $process) {
-            $command = '[' . $lastInput . ']';
+            $command = '['.$lastInput.']';
             $command .= $process;
-            $lastInput = 'p' . $i;
+            $lastInput = 'p'.$i;
             if ($i === (count($videoFilterProcesses) - 1)) {
                 $command .= '[out]';
             } else {
-                $command .= '[' . $lastInput . ']';
+                $command .= '['.$lastInput.']';
             }
 
             $videoFilterCommands[] = $command;
@@ -259,17 +266,18 @@ abstract class AbstractVideo extends Audio
             $commands[] = $videoFilterCommand;
         }
 
-        $this->fs = FsManager::create();
         $this->fsId = uniqid('ffmpeg-passes');
-        $passPrefix = $this->fs->createTemporaryDirectory(0777, 50, $this->fsId) . '/' . uniqid('pass-');
-        $passes = array();
+        $this->fs = (new TemporaryDirectory($this->fsId))->create();
+        $passPrefix = $this->fs->path(uniqid('pass-'));
+        touch($passPrefix);
+        $passes = [];
         $totalPasses = $format->getPasses();
 
         if (!$totalPasses) {
             throw new InvalidArgumentException('Pass number should be a positive value.');
         }
 
-        for ($i = 1; $i <= $totalPasses; $i++) {
+        for ($i = 1; $i <= $totalPasses; ++$i) {
             $pass = $commands;
 
             if ($totalPasses > 1) {
@@ -290,12 +298,11 @@ abstract class AbstractVideo extends Audio
     /**
      * Return base part of command.
      *
-     * @param FormatInterface $format
      * @return array
      */
     protected function basePartOfCommand(FormatInterface $format)
     {
-        $commands = array('-y');
+        $commands = ['-y'];
 
         // If the user passed some initial parameters
         if ($format instanceof VideoInterface) {
diff --git a/src/FFMpeg/Media/AdvancedMedia.php b/src/FFMpeg/Media/AdvancedMedia.php
index 8524f49..f0c061c 100644
--- a/src/FFMpeg/Media/AdvancedMedia.php
+++ b/src/FFMpeg/Media/AdvancedMedia.php
@@ -54,9 +54,7 @@ class AdvancedMedia extends AbstractMediaType
     /**
      * AdvancedMedia constructor.
      *
-     * @param string[]     $inputs Array of files to be opened.
-     * @param FFMpegDriver $driver
-     * @param FFProbe      $ffprobe
+     * @param string[] $inputs array of files to be opened
      */
     public function __construct($inputs, FFMpegDriver $driver, FFProbe $ffprobe)
     {
@@ -72,10 +70,10 @@ class AdvancedMedia extends AbstractMediaType
         parent::__construct($pathfile, $driver, $ffprobe);
         $this->filters = new FiltersCollection();
         $this->inputs = $inputs;
-        $this->initialParameters = array();
-        $this->additionalParameters = array();
-        $this->mapCommands = array();
-        $this->listeners = array();
+        $this->initialParameters = [];
+        $this->additionalParameters = [];
+        $this->mapCommands = [];
+        $this->listeners = [];
     }
 
     /**
@@ -91,27 +89,26 @@ class AdvancedMedia extends AbstractMediaType
     /**
      * Add complex filter.
      *
-     * @param string                  $in
-     * @param ComplexCompatibleFilter $filter
-     * @param string                  $out
+     * @param string $in
+     * @param string $out
      *
      * @return $this
      */
     public function addFilter($in, ComplexCompatibleFilter $filter, $out)
     {
         $this->filters->add(new ComplexFilterContainer($in, $filter, $out));
+
         return $this;
     }
 
     /**
-     * @inheritDoc
+     * {@inheritDoc}
      */
     public function setFiltersCollection(FiltersCollection $filters)
     {
         foreach ($filters as $filter) {
             if (!($filter instanceof ComplexFilterInterface)) {
-                throw new RuntimeException ('For AdvancedMedia you can set filters collection'
-                    . ' contains only objects that implement ComplexFilterInterface!');
+                throw new RuntimeException('For AdvancedMedia you can set filters collection'.' contains only objects that implement ComplexFilterInterface!');
             }
         }
 
@@ -134,6 +131,7 @@ class AdvancedMedia extends AbstractMediaType
     public function setInitialParameters(array $initialParameters)
     {
         $this->initialParameters = $initialParameters;
+
         return $this;
     }
 
@@ -153,6 +151,7 @@ class AdvancedMedia extends AbstractMediaType
     public function setAdditionalParameters(array $additionalParameters)
     {
         $this->additionalParameters = $additionalParameters;
+
         return $this;
     }
 
@@ -183,13 +182,14 @@ class AdvancedMedia extends AbstractMediaType
     /**
      * Select the streams for output.
      *
-     * @param string[]        $outs           Output labels of the -filter_complex part.
-     * @param FormatInterface $format         Format of the output file.
-     * @param string          $outputFilename Output filename.
+     * @param string[]        $outs              output labels of the -filter_complex part
+     * @param FormatInterface $format            format of the output file
+     * @param string          $outputFilename    output filename
      * @param bool            $forceDisableAudio
      * @param bool            $forceDisableVideo
      *
      * @return $this
+     *
      * @see https://ffmpeg.org/ffmpeg.html#Manual-stream-selection
      */
     public function map(
@@ -199,15 +199,17 @@ class AdvancedMedia extends AbstractMediaType
         $forceDisableAudio = false,
         $forceDisableVideo = false
     ) {
-        $commands = array();
+        $commands = [];
         foreach ($outs as $label) {
             $commands[] = '-map';
             $commands[] = $label;
         }
 
         // Apply format params.
-        $commands = array_merge($commands,
-            $this->applyFormatParams($format, $forceDisableAudio, $forceDisableVideo));
+        $commands = array_merge(
+            $commands,
+            $this->applyFormatParams($format, $forceDisableAudio, $forceDisableVideo)
+        );
 
         // Set output file.
         $commands[] = $outputFilename;
@@ -219,6 +221,7 @@ class AdvancedMedia extends AbstractMediaType
         }
 
         $this->mapCommands = array_merge($this->mapCommands, $commands);
+
         return $this;
     }
 
@@ -226,6 +229,7 @@ class AdvancedMedia extends AbstractMediaType
      * Apply added filters and execute ffmpeg command.
      *
      * @return void
+     *
      * @throws RuntimeException
      */
     public function save()
@@ -241,9 +245,8 @@ class AdvancedMedia extends AbstractMediaType
     }
 
     /**
-     * @param FormatInterface $format
-     * @param bool            $forceDisableAudio
-     * @param bool            $forceDisableVideo
+     * @param bool $forceDisableAudio
+     * @param bool $forceDisableVideo
      *
      * @return array
      */
@@ -253,27 +256,27 @@ class AdvancedMedia extends AbstractMediaType
         $forceDisableVideo = false
     ) {
         // Set format params.
-        $commands = array();
+        $commands = [];
         if (!$forceDisableVideo && $format instanceof VideoInterface) {
-            if ($format->getVideoCodec() !== null) {
+            if (null !== $format->getVideoCodec()) {
                 $commands[] = '-vcodec';
                 $commands[] = $format->getVideoCodec();
             }
             // If the user passed some additional format parameters.
-            if ($format->getAdditionalParameters() !== null) {
+            if (null !== $format->getAdditionalParameters()) {
                 $commands = array_merge($commands, $format->getAdditionalParameters());
             }
         }
         if (!$forceDisableAudio && $format instanceof AudioInterface) {
-            if ($format->getAudioCodec() !== null) {
+            if (null !== $format->getAudioCodec()) {
                 $commands[] = '-acodec';
                 $commands[] = $format->getAudioCodec();
             }
-            if ($format->getAudioKiloBitrate() !== null) {
+            if (null !== $format->getAudioKiloBitrate()) {
                 $commands[] = '-b:a';
-                $commands[] = $format->getAudioKiloBitrate() . 'k';
+                $commands[] = $format->getAudioKiloBitrate().'k';
             }
-            if ($format->getAudioChannels() !== null) {
+            if (null !== $format->getAudioChannels()) {
                 $commands[] = '-ac';
                 $commands[] = $format->getAudioChannels();
             }
@@ -288,8 +291,6 @@ class AdvancedMedia extends AbstractMediaType
     }
 
     /**
-     * @param ComplexFilterInterface $filter
-     *
      * @return string
      */
     private function applyComplexFilter(ComplexFilterInterface $filter)
@@ -297,8 +298,8 @@ class AdvancedMedia extends AbstractMediaType
         /** @var $format VideoInterface */
         $filterCommands = $filter->applyComplex($this);
         foreach ($filterCommands as $index => $command) {
-            if ($command === '-vf' || $command === '-filter:v' || $command === '-filter_complex') {
-                unset ($filterCommands[$index]);
+            if ('-vf' === $command || '-filter:v' === $command || '-filter_complex' === $command) {
+                unset($filterCommands[$index]);
             }
         }
 
@@ -306,7 +307,7 @@ class AdvancedMedia extends AbstractMediaType
 
         // Compatibility with the some existed filters:
         // If the command contains [in], just replace it to inLabel. If not - to add it manually.
-        if (stripos($strCommand, '[in]') !== false) {
+        if (false !== stripos($strCommand, '[in]')) {
             $strCommand = str_replace('[in]', $filter->getInLabels(), $strCommand);
             $in = '';
         } else {
@@ -314,35 +315,35 @@ class AdvancedMedia extends AbstractMediaType
         }
 
         // If the command contains [out], just replace it to outLabel. If not - to add it manually.
-        if (stripos($strCommand, '[out]') !== false) {
+        if (false !== stripos($strCommand, '[out]')) {
             $strCommand = str_replace('[out]', $filter->getOutLabels(), $strCommand);
             $out = '';
         } else {
             $out = $filter->getOutLabels();
         }
 
-        return $in . $strCommand . $out;
+        return $in.$strCommand.$out;
     }
 
     /**
      * @return void
+     *
      * @throws RuntimeException
      */
     protected function assertFiltersAreCompatibleToCurrentFFMpegVersion()
     {
-        $messages = array();
+        $messages = [];
         $currentVersion = $this->getFFMpegDriver()->getVersion();
         /** @var ComplexFilterInterface $filter */
         foreach ($this->filters as $filter) {
             if (version_compare($currentVersion, $filter->getMinimalFFMpegVersion(), '<')) {
-                $messages[] = $filter->getName() . ' filter is supported starting from '
-                    . $filter->getMinimalFFMpegVersion() . ' ffmpeg version';
+                $messages[] = $filter->getName().' filter is supported starting from '
+                    .$filter->getMinimalFFMpegVersion().' ffmpeg version';
             }
         }
 
         if (!empty($messages)) {
-            throw new RuntimeException(implode('; ', $messages)
-                . '; your ffmpeg version is ' . $currentVersion);
+            throw new RuntimeException(implode('; ', $messages).'; your ffmpeg version is '.$currentVersion);
         }
     }
 
@@ -351,8 +352,10 @@ class AdvancedMedia extends AbstractMediaType
      */
     protected function buildCommand()
     {
-        $globalOptions = array('threads', 'filter_threads', 'filter_complex_threads');
-        return array_merge(array('-y'),
+        $globalOptions = ['threads', 'filter_threads', 'filter_complex_threads'];
+
+        return array_merge(
+            ['-y'],
             $this->buildConfiguredGlobalOptions($globalOptions),
             $this->getInitialParameters(),
             $this->buildInputsPart($this->inputs),
@@ -369,14 +372,14 @@ class AdvancedMedia extends AbstractMediaType
      */
     private function buildConfiguredGlobalOptions($optionNames)
     {
-        $commands = array();
+        $commands = [];
         foreach ($optionNames as $optionName) {
-            if (!$this->driver->getConfiguration()->has('ffmpeg.' . $optionName)) {
+            if (!$this->driver->getConfiguration()->has('ffmpeg.'.$optionName)) {
                 continue;
             }
 
-            $commands[] = '-' . $optionName;
-            $commands[] = $this->driver->getConfiguration()->get('ffmpeg.' . $optionName);
+            $commands[] = '-'.$optionName;
+            $commands[] = $this->driver->getConfiguration()->get('ffmpeg.'.$optionName);
         }
 
         return $commands;
@@ -391,7 +394,7 @@ class AdvancedMedia extends AbstractMediaType
      */
     private function buildInputsPart(array $inputs)
     {
-        $commands = array();
+        $commands = [];
         foreach ($inputs as $input) {
             $commands[] = '-i';
             $commands[] = $input;
@@ -403,13 +406,11 @@ class AdvancedMedia extends AbstractMediaType
     /**
      * Build "-filter_complex" part of the ffmpeg command.
      *
-     * @param FiltersCollection $complexFilters
-     *
      * @return array
      */
     private function buildComplexFilterPart(FiltersCollection $complexFilters)
     {
-        $commands = array();
+        $commands = [];
         /** @var ComplexFilterInterface $filter */
         foreach ($complexFilters as $filter) {
             $filterCommand = $this->applyComplexFilter($filter);
@@ -417,8 +418,9 @@ class AdvancedMedia extends AbstractMediaType
         }
 
         if (empty($commands)) {
-            return array();
+            return [];
         }
-        return array('-filter_complex', implode(';', $commands));
+
+        return ['-filter_complex', implode(';', $commands)];
     }
 }
diff --git a/src/FFMpeg/Media/Audio.php b/src/FFMpeg/Media/Audio.php
index 0f54046..bd624d0 100644
--- a/src/FFMpeg/Media/Audio.php
+++ b/src/FFMpeg/Media/Audio.php
@@ -12,13 +12,13 @@
 namespace FFMpeg\Media;
 
 use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
-use FFMpeg\Filters\Audio\AudioFilters;
-use FFMpeg\Format\FormatInterface;
-use FFMpeg\Filters\Audio\SimpleFilter;
-use FFMpeg\Exception\RuntimeException;
 use FFMpeg\Exception\InvalidArgumentException;
+use FFMpeg\Exception\RuntimeException;
 use FFMpeg\Filters\Audio\AudioFilterInterface;
+use FFMpeg\Filters\Audio\AudioFilters;
+use FFMpeg\Filters\Audio\SimpleFilter;
 use FFMpeg\Filters\FilterInterface;
+use FFMpeg\Format\FormatInterface;
 use FFMpeg\Format\ProgressableInterface;
 
 class Audio extends AbstractStreamableMedia
@@ -52,9 +52,10 @@ class Audio extends AbstractStreamableMedia
     /**
      * Exports the audio in the desired format, applies registered filters.
      *
-     * @param FormatInterface   $format
-     * @param string            $outputPathfile
+     * @param string $outputPathfile
+     *
      * @return Audio
+     *
      * @throws RuntimeException
      */
     public function save(FormatInterface $format, $outputPathfile)
@@ -80,34 +81,38 @@ class Audio extends AbstractStreamableMedia
     /**
      * Returns the final command as a string, useful for debugging purposes.
      *
-     * @param FormatInterface   $format
-     * @param string            $outputPathfile
+     * @param string $outputPathfile
+     *
      * @return string
+     *
      * @since 0.11.0
      */
-    public function getFinalCommand(FormatInterface $format, $outputPathfile) {
+    public function getFinalCommand(FormatInterface $format, $outputPathfile)
+    {
         return implode(' ', $this->buildCommand($format, $outputPathfile));
     }
 
     /**
-     * Builds the command which will be executed with the provided format
+     * Builds the command which will be executed with the provided format.
+     *
+     * @param string $outputPathfile
      *
-     * @param FormatInterface   $format
-     * @param string            $outputPathfile
      * @return string[] An array which are the components of the command
+     *
      * @since 0.11.0
      */
-    protected function buildCommand(FormatInterface $format, $outputPathfile) {
-        $commands = array('-y', '-i', $this->pathfile);
+    protected function buildCommand(FormatInterface $format, $outputPathfile)
+    {
+        $commands = ['-y', '-i', $this->pathfile];
 
         $filters = clone $this->filters;
         $filters->add(new SimpleFilter($format->getExtraParams(), 10));
 
         if ($this->driver->getConfiguration()->has('ffmpeg.threads')) {
-            $filters->add(new SimpleFilter(array('-threads', $this->driver->getConfiguration()->get('ffmpeg.threads'))));
+            $filters->add(new SimpleFilter(['-threads', $this->driver->getConfiguration()->get('ffmpeg.threads')]));
         }
         if (null !== $format->getAudioCodec()) {
-            $filters->add(new SimpleFilter(array('-acodec', $format->getAudioCodec())));
+            $filters->add(new SimpleFilter(['-acodec', $format->getAudioCodec()]));
         }
 
         foreach ($filters as $filter) {
@@ -116,7 +121,7 @@ class Audio extends AbstractStreamableMedia
 
         if (null !== $format->getAudioKiloBitrate()) {
             $commands[] = '-b:a';
-            $commands[] = $format->getAudioKiloBitrate() . 'k';
+            $commands[] = $format->getAudioKiloBitrate().'k';
         }
         if (null !== $format->getAudioChannels()) {
             $commands[] = '-ac';
@@ -130,12 +135,13 @@ class Audio extends AbstractStreamableMedia
     /**
      * Gets the waveform of the video.
      *
-     * @param  int $width
-     * @param  int $height
+     * @param int   $width
+     * @param int   $height
      * @param array $colors Array of colors for ffmpeg to use. Color format is #000000 (RGB hex string with #)
+     *
      * @return Waveform
      */
-    public function waveform($width = 640, $height = 120, $colors = array(Waveform::DEFAULT_COLOR))
+    public function waveform($width = 640, $height = 120, $colors = [Waveform::DEFAULT_COLOR])
     {
         return new Waveform($this, $this->driver, $this->ffprobe, $width, $height, $colors);
     }
@@ -143,7 +149,8 @@ class Audio extends AbstractStreamableMedia
     /**
      * Concatenates a list of audio files into one unique audio file.
      *
-     * @param  array $sources
+     * @param array $sources
+     *
      * @return Concat
      */
     public function concat($sources)
diff --git a/src/FFMpeg/Media/Clip.php b/src/FFMpeg/Media/Clip.php
index b2d5e76..0d85b39 100644
--- a/src/FFMpeg/Media/Clip.php
+++ b/src/FFMpeg/Media/Clip.php
@@ -1,9 +1,10 @@
 start, '-i', $this->pathfile);
+        $arr = ['-y', '-ss', (string) $this->start, '-i', $this->pathfile];
 
-        if (is_null($this->duration) === false) {
+        if (false === is_null($this->duration)) {
             $arr[] = '-t';
             $arr[] = (string) $this->duration;
         }
diff --git a/src/FFMpeg/Media/Concat.php b/src/FFMpeg/Media/Concat.php
index edcb025..ecd213e 100644
--- a/src/FFMpeg/Media/Concat.php
+++ b/src/FFMpeg/Media/Concat.php
@@ -13,18 +13,16 @@ namespace FFMpeg\Media;
 
 use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
 use Alchemy\BinaryDriver\Exception\InvalidArgumentException;
-use FFMpeg\Filters\Concat\ConcatFilterInterface;
-use FFMpeg\Filters\Concat\ConcatFilters;
 use FFMpeg\Driver\FFMpegDriver;
+use FFMpeg\Exception\RuntimeException;
 use FFMpeg\FFProbe;
 use FFMpeg\Filters\Audio\SimpleFilter;
-use FFMpeg\Exception\RuntimeException;
-use FFMpeg\Format\FormatInterface;
-use FFMpeg\Filters\FilterInterface;
-use FFMpeg\Format\ProgressableInterface;
+use FFMpeg\Filters\Concat\ConcatFilterInterface;
+use FFMpeg\Filters\Concat\ConcatFilters;
 use FFMpeg\Format\AudioInterface;
+use FFMpeg\Format\FormatInterface;
 use FFMpeg\Format\VideoInterface;
-use Neutron\TemporaryFilesystem\Manager as FsManager;
+use Spatie\TemporaryDirectory\TemporaryDirectory;
 
 class Concat extends AbstractMediaType
 {
@@ -72,14 +70,14 @@ class Concat extends AbstractMediaType
     /**
      * Saves the concatenated video in the given array, considering that the sources videos are all encoded with the same codec.
      *
-     * @param string  $outputPathfile
-     * @param bool    $streamCopy
+     * @param string $outputPathfile
+     * @param bool   $streamCopy
      *
      * @return Concat
      *
      * @throws RuntimeException
      */
-    public function saveFromSameCodecs($outputPathfile, $streamCopy = TRUE)
+    public function saveFromSameCodecs($outputPathfile, $streamCopy = true)
     {
         /**
          * @see https://ffmpeg.org/ffmpeg-formats.html#concat
@@ -87,44 +85,43 @@ class Concat extends AbstractMediaType
          */
 
         // Create the file which will contain the list of videos
-        $fs = FsManager::create();
-        $sourcesFile = $fs->createTemporaryFile('ffmpeg-concat');
+        $fs = (new TemporaryDirectory())->create();
+        $sourcesFile = $fs->path('ffmpeg.concat');
 
         // Set the content of this file
         $fileStream = @fopen($sourcesFile, 'w');
 
-        if($fileStream === false) {
+        if (false === $fileStream) {
             throw new RuntimeException('Cannot open the temporary file.');
         }
 
         $count_videos = 0;
-        if(is_array($this->sources) && (count($this->sources) > 0)) {
+        if (is_array($this->sources) && (count($this->sources) > 0)) {
             foreach ($this->sources as $videoPath) {
-                $line = "";
+                $line = '';
 
-                if($count_videos != 0)
+                if (0 != $count_videos) {
                     $line .= "\n";
+                }
 
-                $line .= "file " . addcslashes($videoPath, '\'"\\\0 ');
+                $line .= 'file '.addcslashes($videoPath, '\'"\\\0 ');
 
                 fwrite($fileStream, $line);
 
-                $count_videos++;
+                ++$count_videos;
             }
-        }
-        else {
+        } else {
             throw new InvalidArgumentException('The list of videos is not a valid array.');
         }
         fclose($fileStream);
 
-
-        $commands = array(
+        $commands = [
             '-f', 'concat', '-safe', '0',
-            '-i', $sourcesFile
-        );
+            '-i', $sourcesFile,
+        ];
 
         // Check if stream copy is activated
-        if($streamCopy === TRUE) {
+        if (true === $streamCopy) {
             $commands[] = '-c';
             $commands[] = 'copy';
         }
@@ -137,7 +134,7 @@ class Concat extends AbstractMediaType
         }
 
         // Set the output file in the command
-        $commands = array_merge($commands, array($outputPathfile));
+        $commands = array_merge($commands, [$outputPathfile]);
 
         // Execute the command
         try {
@@ -150,42 +147,42 @@ class Concat extends AbstractMediaType
         }
 
         $this->cleanupTemporaryFile($sourcesFile);
+
         return $this;
     }
 
     /**
      * Saves the concatenated video in the given filename, considering that the sources videos are all encoded with the same codec.
      *
-     * @param FormatInterface $format
      * @param string $outputPathfile
      *
      * @return Concat
      */
     public function saveFromDifferentCodecs(FormatInterface $format, $outputPathfile)
     {
-        /**
+        /*
          * @see https://ffmpeg.org/ffmpeg-formats.html#concat
          * @see https://trac.ffmpeg.org/wiki/Concatenate
          */
 
         // Check the validity of the parameter
-        if(!is_array($this->sources) || (count($this->sources) == 0)) {
+        if (!is_array($this->sources) || (0 == count($this->sources))) {
             throw new InvalidArgumentException('The list of videos is not a valid array.');
         }
 
         // Create the commands variable
-        $commands = array();
+        $commands = [];
 
         // Prepare the parameters
         $nbSources = 0;
-        $files = array();
+        $files = [];
 
         // For each source, check if this is a legit file
         // and prepare the parameters
         foreach ($this->sources as $videoPath) {
             $files[] = '-i';
             $files[] = $videoPath;
-            $nbSources++;
+            ++$nbSources;
         }
 
         $commands = array_merge($commands, $files);
@@ -194,7 +191,7 @@ class Concat extends AbstractMediaType
         $commands[] = '-filter_complex';
 
         $complex_filter = '';
-        for($i=0; $i<$nbSources; $i++) {
+        for ($i = 0; $i < $nbSources; ++$i) {
             $complex_filter .= '['.$i.':v:0] ['.$i.':a:0] ';
         }
         $complex_filter .= 'concat=n='.$nbSources.':v=1:a=1 [v] [a]';
@@ -210,16 +207,16 @@ class Concat extends AbstractMediaType
         $filters->add(new SimpleFilter($format->getExtraParams(), 10));
 
         if ($this->driver->getConfiguration()->has('ffmpeg.threads')) {
-            $filters->add(new SimpleFilter(array('-threads', $this->driver->getConfiguration()->get('ffmpeg.threads'))));
+            $filters->add(new SimpleFilter(['-threads', $this->driver->getConfiguration()->get('ffmpeg.threads')]));
         }
         if ($format instanceof VideoInterface) {
             if (null !== $format->getVideoCodec()) {
-                $filters->add(new SimpleFilter(array('-vcodec', $format->getVideoCodec())));
+                $filters->add(new SimpleFilter(['-vcodec', $format->getVideoCodec()]));
             }
         }
         if ($format instanceof AudioInterface) {
             if (null !== $format->getAudioCodec()) {
-                $filters->add(new SimpleFilter(array('-acodec', $format->getAudioCodec())));
+                $filters->add(new SimpleFilter(['-acodec', $format->getAudioCodec()]));
             }
         }
 
@@ -231,7 +228,7 @@ class Concat extends AbstractMediaType
         if ($format instanceof AudioInterface) {
             if (null !== $format->getAudioKiloBitrate()) {
                 $commands[] = '-b:a';
-                $commands[] = $format->getAudioKiloBitrate() . 'k';
+                $commands[] = $format->getAudioKiloBitrate().'k';
             }
             if (null !== $format->getAudioChannels()) {
                 $commands[] = '-ac';
diff --git a/src/FFMpeg/Media/Frame.php b/src/FFMpeg/Media/Frame.php
index a7de231..2ce2894 100644
--- a/src/FFMpeg/Media/Frame.php
+++ b/src/FFMpeg/Media/Frame.php
@@ -12,12 +12,12 @@
 namespace FFMpeg\Media;
 
 use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
+use FFMpeg\Coordinate\TimeCode;
+use FFMpeg\Driver\FFMpegDriver;
+use FFMpeg\Exception\RuntimeException;
+use FFMpeg\FFProbe;
 use FFMpeg\Filters\Frame\FrameFilterInterface;
 use FFMpeg\Filters\Frame\FrameFilters;
-use FFMpeg\Driver\FFMpegDriver;
-use FFMpeg\FFProbe;
-use FFMpeg\Exception\RuntimeException;
-use FFMpeg\Coordinate\TimeCode;
 
 class Frame extends AbstractMediaType
 {
@@ -79,8 +79,8 @@ class Frame extends AbstractMediaType
      * Uses the `unaccurate method by default.`
      *
      * @param string $pathfile
-     * @param bool $accurate
-     * @param bool $returnBase64
+     * @param bool   $accurate
+     * @param bool   $returnBase64
      *
      * @return Frame
      *
@@ -89,27 +89,28 @@ class Frame extends AbstractMediaType
     public function save($pathfile, $accurate = false, $returnBase64 = false)
     {
         /**
-         * might be optimized with http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg
+         * might be optimized with http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg.
+         *
          * @see http://ffmpeg.org/ffmpeg.html#Main-options
          */
-        $outputFormat = $returnBase64 ? "image2pipe" : "image2";
+        $outputFormat = $returnBase64 ? 'image2pipe' : 'image2';
         if (!$accurate) {
-            $commands = array(
+            $commands = [
                 '-y', '-ss', (string) $this->timecode,
                 '-i', $this->pathfile,
                 '-vframes', '1',
-                '-f', $outputFormat
-            );
+                '-f', $outputFormat,
+            ];
         } else {
-            $commands = array(
+            $commands = [
                 '-y', '-i', $this->pathfile,
                 '-vframes', '1', '-ss', (string) $this->timecode,
-                '-f', $outputFormat
-            );
+                '-f', $outputFormat,
+            ];
         }
-        
-        if($returnBase64) {
-            array_push($commands, "-");
+
+        if ($returnBase64) {
+            array_push($commands, '-');
         }
 
         foreach ($this->filters as $filter) {
@@ -117,15 +118,15 @@ class Frame extends AbstractMediaType
         }
 
         if (!$returnBase64) {
-            $commands = array_merge($commands, array($pathfile));
+            $commands = array_merge($commands, [$pathfile]);
         }
 
         try {
-            if(!$returnBase64) {
+            if (!$returnBase64) {
                 $this->driver->command($commands);
+
                 return $this;
-            }
-            else {
+            } else {
                 return $this->driver->command($commands);
             }
         } catch (ExecutionFailureException $e) {
diff --git a/src/FFMpeg/Media/Gif.php b/src/FFMpeg/Media/Gif.php
index ee85598..fbc61cd 100644
--- a/src/FFMpeg/Media/Gif.php
+++ b/src/FFMpeg/Media/Gif.php
@@ -12,13 +12,13 @@
 namespace FFMpeg\Media;
 
 use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
+use FFMpeg\Coordinate\Dimension;
+use FFMpeg\Coordinate\TimeCode;
+use FFMpeg\Driver\FFMpegDriver;
+use FFMpeg\Exception\RuntimeException;
+use FFMpeg\FFProbe;
 use FFMpeg\Filters\Gif\GifFilterInterface;
 use FFMpeg\Filters\Gif\GifFilters;
-use FFMpeg\Driver\FFMpegDriver;
-use FFMpeg\FFProbe;
-use FFMpeg\Exception\RuntimeException;
-use FFMpeg\Coordinate\TimeCode;
-use FFMpeg\Coordinate\Dimension;
 
 class Gif extends AbstractMediaType
 {
@@ -91,7 +91,7 @@ class Gif extends AbstractMediaType
     /**
      * Saves the gif in the given filename.
      *
-     * @param string  $pathfile
+     * @param string $pathfile
      *
      * @return Gif
      *
@@ -102,19 +102,19 @@ class Gif extends AbstractMediaType
         /**
          * @see http://ffmpeg.org/ffmpeg.html#Main-options
          */
-        $commands = array(
-            '-ss', (string)$this->timecode
-        );
+        $commands = [
+            '-ss', (string) $this->timecode,
+        ];
 
-        if(null !== $this->duration) {
+        if (null !== $this->duration) {
             $commands[] = '-t';
-            $commands[] = (string)$this->duration;
+            $commands[] = (string) $this->duration;
         }
 
         $commands[] = '-i';
         $commands[] = $this->pathfile;
         $commands[] = '-vf';
-        $commands[] = 'scale=' . $this->dimension->getWidth() . ':-1';
+        $commands[] = 'scale='.$this->dimension->getWidth().':-1';
         $commands[] = '-gifflags';
         $commands[] = '+transdiff';
         $commands[] = '-y';
@@ -123,7 +123,7 @@ class Gif extends AbstractMediaType
             $commands = array_merge($commands, $filter->apply($this));
         }
 
-        $commands = array_merge($commands, array($pathfile));
+        $commands = array_merge($commands, [$pathfile]);
 
         try {
             $this->driver->command($commands);
diff --git a/src/FFMpeg/Media/Video.php b/src/FFMpeg/Media/Video.php
index f5e144e..97c2f43 100644
--- a/src/FFMpeg/Media/Video.php
+++ b/src/FFMpeg/Media/Video.php
@@ -1,4 +1,5 @@
 getPathfile(), $driver, $ffprobe);
         $this->audio = $audio;
@@ -80,15 +80,11 @@ class Waveform extends AbstractMediaType
      * example #FFFFFF or #000000. By default the color is set to black. Keep in mind that if you save the waveform
      * as jpg file, it will appear completely black and to avoid this you can set the waveform color to white (#FFFFFF).
      * Saving waveforms to png is strongly suggested.
-     *
-     * @param array $colors
      */
     public function setColors(array $colors)
     {
-        foreach ($colors as $row => $value)
-        {
-            if (!preg_match('/^#(?:[0-9a-fA-F]{6})$/', $value))
-            {
+        foreach ($colors as $row => $value) {
+            if (!preg_match('/^#(?:[0-9a-fA-F]{6})$/', $value)) {
                 //invalid color
                 //unset($colors[$row]);
 
@@ -96,8 +92,7 @@ class Waveform extends AbstractMediaType
             }
         }
 
-        if (count($colors))
-        {
+        if (count($colors)) {
             $this->colors = $colors;
         }
     }
@@ -127,7 +122,7 @@ class Waveform extends AbstractMediaType
     /**
      * Saves the waveform in the given filename.
      *
-     * @param string  $pathfile
+     * @param string $pathfile
      *
      * @return Waveform
      *
@@ -136,20 +131,21 @@ class Waveform extends AbstractMediaType
     public function save($pathfile)
     {
         /**
-         * might be optimized with http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg
+         * might be optimized with http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg.
+         *
          * @see http://ffmpeg.org/ffmpeg.html#Main-options
          */
-        $commands = array(
+        $commands = [
             '-y', '-i', $this->pathfile, '-filter_complex',
             'showwavespic=colors='.$this->compileColors().':s='.$this->width.'x'.$this->height,
-            '-frames:v', '1'
-        );
+            '-frames:v', '1',
+        ];
 
         foreach ($this->filters as $filter) {
             $commands = array_merge($commands, $filter->apply($this));
         }
 
-        $commands = array_merge($commands, array($pathfile));
+        $commands = array_merge($commands, [$pathfile]);
 
         try {
             $this->driver->command($commands);
diff --git a/tests/Alchemy/BinaryDriver/AbstractBinaryTest.php b/tests/Alchemy/BinaryDriver/AbstractBinaryTest.php
new file mode 100644
index 0000000..6be0cf1
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/AbstractBinaryTest.php
@@ -0,0 +1,300 @@
+find('php');
+
+        if (null === $php) {
+            $this->markTestSkipped('Unable to find a php binary');
+        }
+
+        return $php;
+    }
+
+    public function testSimpleLoadWithBinaryPath()
+    {
+        $php = $this->getPhpBinary();
+        $imp = Implementation::load($php);
+        $this->assertInstanceOf('Alchemy\Tests\BinaryDriver\Implementation', $imp);
+
+        $this->assertEquals($php, $imp->getProcessBuilderFactory()->getBinary());
+    }
+
+    public function testMultipleLoadWithBinaryPath()
+    {
+        $php = $this->getPhpBinary();
+        $imp = Implementation::load(['/zz/path/to/unexisting/command', $php]);
+        $this->assertInstanceOf('Alchemy\Tests\BinaryDriver\Implementation', $imp);
+
+        $this->assertEquals($php, $imp->getProcessBuilderFactory()->getBinary());
+    }
+
+    public function testSimpleLoadWithBinaryName()
+    {
+        $php = $this->getPhpBinary();
+        $imp = Implementation::load('php');
+        $this->assertInstanceOf('Alchemy\Tests\BinaryDriver\Implementation', $imp);
+
+        $this->assertEquals($php, $imp->getProcessBuilderFactory()->getBinary());
+    }
+
+    public function testMultipleLoadWithBinaryName()
+    {
+        $php = $this->getPhpBinary();
+        $imp = Implementation::load(['bachibouzouk', 'php']);
+        $this->assertInstanceOf('Alchemy\Tests\BinaryDriver\Implementation', $imp);
+
+        $this->assertEquals($php, $imp->getProcessBuilderFactory()->getBinary());
+    }
+
+    public function testLoadWithMultiplePathExpectingAFailure()
+    {
+        $this->expectException(ExecutableNotFoundException::class);
+
+        Implementation::load(['bachibouzouk', 'moribon']);
+    }
+
+    public function testLoadWithUniquePathExpectingAFailure()
+    {
+        $this->expectException(ExecutableNotFoundException::class);
+
+        Implementation::load('bachibouzouk');
+    }
+
+    public function testLoadWithCustomLogger()
+    {
+        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
+        $imp    = Implementation::load('php', $logger);
+
+        $this->assertEquals($logger, $imp->getProcessRunner()->getLogger());
+    }
+
+    public function testLoadWithCustomConfigurationAsArray()
+    {
+        $conf = ['timeout' => 200];
+        $imp  = Implementation::load('php', null, $conf);
+
+        $this->assertEquals($conf, $imp->getConfiguration()->all());
+    }
+
+    public function testLoadWithCustomConfigurationAsObject()
+    {
+        $conf = $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock();
+        $imp  = Implementation::load('php', null, $conf);
+
+        $this->assertEquals($conf, $imp->getConfiguration());
+    }
+
+    public function testProcessBuilderFactoryGetterAndSetters()
+    {
+        $imp     = Implementation::load('php');
+        $factory = $this->getMockBuilder('Alchemy\BinaryDriver\ProcessBuilderFactoryInterface')->getMock();
+
+        $imp->setProcessBuilderFactory($factory);
+        $this->assertEquals($factory, $imp->getProcessBuilderFactory());
+    }
+
+    public function testConfigurationGetterAndSetters()
+    {
+        $imp  = Implementation::load('php');
+        $conf = $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock();
+
+        $imp->setConfiguration($conf);
+        $this->assertEquals($conf, $imp->getConfiguration());
+    }
+
+    public function testTimeoutIsSetOnConstruction()
+    {
+        $imp = Implementation::load('php', null, ['timeout' => 42]);
+        $this->assertEquals(42, $imp->getProcessBuilderFactory()->getTimeout());
+    }
+
+    public function testTimeoutIsSetOnConfigurationSetting()
+    {
+        $imp = Implementation::load('php', null);
+        $imp->setConfiguration(new Configuration(['timeout' => 42]));
+        $this->assertEquals(42, $imp->getProcessBuilderFactory()->getTimeout());
+    }
+
+    public function testTimeoutIsSetOnProcessBuilderSetting()
+    {
+        $imp = Implementation::load('php', null, ['timeout' => 42]);
+
+        $factory = $this->getMockBuilder('Alchemy\BinaryDriver\ProcessBuilderFactoryInterface')->getMock();
+        $factory->expects($this->once())
+            ->method('setTimeout')
+            ->with(42);
+
+        $imp->setProcessBuilderFactory($factory);
+    }
+
+    public function testListenRegistersAListener()
+    {
+        $imp = Implementation::load('php');
+
+        $listeners = $this->getMockBuilder('Alchemy\BinaryDriver\Listeners\Listeners')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $listener = $this->getMockBuilder('Alchemy\BinaryDriver\Listeners\ListenerInterface')->getMock();
+
+        $listeners->expects($this->once())
+            ->method('register')
+            ->with($this->equalTo($listener), $this->equalTo($imp));
+
+        $reflexion = new \ReflectionClass('Alchemy\BinaryDriver\AbstractBinary');
+        $prop      = $reflexion->getProperty('listenersManager');
+        $prop->setAccessible(true);
+        $prop->setValue($imp, $listeners);
+
+        $imp->listen($listener);
+    }
+
+    /**
+     * @dataProvider provideCommandParameters
+     */
+    public function testCommandRunsAProcess($parameters, $bypassErrors, $expectedParameters, $output)
+    {
+        $imp           = Implementation::load('php');
+        $factory       = $this->getMockBuilder('Alchemy\BinaryDriver\ProcessBuilderFactoryInterface')->getMock();
+        $processRunner = $this->getMockBuilder('Alchemy\BinaryDriver\ProcessRunnerInterface')->getMock();
+
+        $process = $this->getMockBuilder('Symfony\Component\Process\Process')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $processRunner->expects($this->once())
+            ->method('run')
+            ->with($this->equalTo($process), $this->isInstanceOf('SplObjectStorage'), $this->equalTo($bypassErrors))
+            ->will($this->returnValue($output));
+
+        $factory->expects($this->once())
+            ->method('create')
+            ->with($expectedParameters)
+            ->will($this->returnValue($process));
+
+        $imp->setProcessBuilderFactory($factory);
+        $imp->setProcessRunner($processRunner);
+
+        $this->assertEquals($output, $imp->command($parameters, $bypassErrors));
+    }
+
+    /**
+     * @dataProvider provideCommandWithListenersParameters
+     */
+    public function testCommandWithTemporaryListeners($parameters, $bypassErrors, $expectedParameters, $output, $count, $listeners)
+    {
+        $imp           = Implementation::load('php');
+        $factory       = $this->getMockBuilder('Alchemy\BinaryDriver\ProcessBuilderFactoryInterface')->getMock();
+        $processRunner = $this->getMockBuilder('Alchemy\BinaryDriver\ProcessRunnerInterface')->getMock();
+
+        $process = $this->getMockBuilder('Symfony\Component\Process\Process')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $firstStorage = $secondStorage = null;
+
+        $processRunner->expects($this->exactly(2))
+            ->method('run')
+            ->with($this->equalTo($process), $this->isInstanceOf('SplObjectStorage'), $this->equalTo($bypassErrors))
+            ->will($this->returnCallback(function ($process, $storage, $errors) use ($output, &$firstStorage, &$secondStorage) {
+                if (null === $firstStorage) {
+                    $firstStorage = $storage;
+                } else {
+                    $secondStorage = $storage;
+                }
+
+                return $output;
+            }));
+
+        $factory->expects($this->exactly(2))
+            ->method('create')
+            ->with($expectedParameters)
+            ->will($this->returnValue($process));
+
+        $imp->setProcessBuilderFactory($factory);
+        $imp->setProcessRunner($processRunner);
+
+        $this->assertEquals($output, $imp->command($parameters, $bypassErrors, $listeners));
+        $this->assertCount($count, $firstStorage);
+        $this->assertEquals($output, $imp->command($parameters, $bypassErrors));
+        $this->assertCount(0, $secondStorage);
+    }
+
+    public function provideCommandWithListenersParameters()
+    {
+        return [
+            ['-a', false, ['-a'], 'loubda', 2, [$this->getMockListener(), $this->getMockListener()]],
+            ['-a', false, ['-a'], 'loubda', 1, [$this->getMockListener()]],
+            ['-a', false, ['-a'], 'loubda', 1, $this->getMockListener()],
+            ['-a', false, ['-a'], 'loubda', 0, []],
+        ];
+    }
+
+    public function provideCommandParameters()
+    {
+        return [
+            ['-a', false, ['-a'], 'loubda'],
+            ['-a', true, ['-a'], 'loubda'],
+            ['-a -b', false, ['-a -b'], 'loubda'],
+            [['-a'], false, ['-a'], 'loubda'],
+            [['-a'], true, ['-a'], 'loubda'],
+            [['-a', '-b'], false, ['-a', '-b'], 'loubda'],
+        ];
+    }
+
+    public function testUnlistenUnregistersAListener()
+    {
+        $imp = Implementation::load('php');
+
+        $listeners = $this->getMockBuilder('Alchemy\BinaryDriver\Listeners\Listeners')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $listener = $this->getMockBuilder('Alchemy\BinaryDriver\Listeners\ListenerInterface')->getMock();
+
+        $listeners->expects($this->once())
+            ->method('unregister')
+            ->with($this->equalTo($listener), $this->equalTo($imp));
+
+        $reflexion = new \ReflectionClass('Alchemy\BinaryDriver\AbstractBinary');
+        $prop      = $reflexion->getProperty('listenersManager');
+        $prop->setAccessible(true);
+        $prop->setValue($imp, $listeners);
+
+        $imp->unlisten($listener);
+    }
+
+    /**
+     * @return \PHPUnit_Framework_MockObject_MockObject
+     */
+    private function getMockListener()
+    {
+        $listener = $this->getMockBuilder(ListenerInterface::class)->getMock();
+        $listener->expects($this->any())
+            ->method('forwardedEvents')
+            ->willReturn([]);
+
+        return $listener;
+    }
+}
+
+class Implementation extends AbstractBinary
+{
+    public function getName()
+    {
+        return 'Implementation';
+    }
+}
diff --git a/tests/Alchemy/BinaryDriver/AbstractProcessBuilderFactoryTest.php b/tests/Alchemy/BinaryDriver/AbstractProcessBuilderFactoryTest.php
new file mode 100644
index 0000000..9f38ca4
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/AbstractProcessBuilderFactoryTest.php
@@ -0,0 +1,98 @@
+markTestSkipped('Unable to detect php binary, skipping');
+        }
+    }
+
+    public static function setUpBeforeClass(): void
+    {
+        $finder            = new ExecutableFinder();
+        static::$phpBinary = $finder->find('php');
+    }
+
+    public function testThatBinaryIsSetOnConstruction()
+    {
+        $factory = $this->getProcessBuilderFactory(static::$phpBinary);
+        $this->assertEquals(static::$phpBinary, $factory->getBinary());
+    }
+
+    public function testGetSetBinary()
+    {
+        $finder  = new ExecutableFinder();
+        $phpUnit = $finder->find('phpunit');
+
+        if (null === $phpUnit) {
+            $this->markTestSkipped('Unable to detect phpunit binary, skipping');
+        }
+
+        $factory = $this->getProcessBuilderFactory(static::$phpBinary);
+        $factory->useBinary($phpUnit);
+        $this->assertEquals($phpUnit, $factory->getBinary());
+    }
+
+    public function testUseNonExistantBinary()
+    {
+        $this->expectException(InvalidArgumentException::class);
+
+        $factory = $this->getProcessBuilderFactory(static::$phpBinary);
+        $factory->useBinary('itissureitdoesnotexist');
+    }
+
+    public function testCreateShouldReturnAProcess()
+    {
+        $factory = $this->getProcessBuilderFactory(static::$phpBinary);
+        $process = $factory->create();
+
+        $this->assertInstanceOf('Symfony\Component\Process\Process', $process);
+        $this->assertEquals("'" . static::$phpBinary . "'", $process->getCommandLine());
+    }
+
+    public function testCreateWithStringArgument()
+    {
+        $factory = $this->getProcessBuilderFactory(static::$phpBinary);
+        $process = $factory->create('-v');
+
+        $this->assertInstanceOf('Symfony\Component\Process\Process', $process);
+        $this->assertEquals("'" . static::$phpBinary . "' '-v'", $process->getCommandLine());
+    }
+
+    public function testCreateWithArrayArgument()
+    {
+        $factory = $this->getProcessBuilderFactory(static::$phpBinary);
+        $process = $factory->create(['-r', 'echo "Hello !";']);
+
+        $this->assertInstanceOf('Symfony\Component\Process\Process', $process);
+        $this->assertEquals("'" . static::$phpBinary . "' '-r' 'echo \"Hello !\";'", $process->getCommandLine());
+    }
+
+    public function testCreateWithTimeout()
+    {
+        $factory = $this->getProcessBuilderFactory(static::$phpBinary);
+        $factory->setTimeout(200);
+        $process = $factory->create(['-i']);
+
+        $this->assertInstanceOf('Symfony\Component\Process\Process', $process);
+        $this->assertEquals(200, $process->getTimeout());
+    }
+}
diff --git a/tests/Alchemy/BinaryDriver/ConfigurationTest.php b/tests/Alchemy/BinaryDriver/ConfigurationTest.php
new file mode 100644
index 0000000..71e1891
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/ConfigurationTest.php
@@ -0,0 +1,78 @@
+ 'value']);
+
+        $this->assertTrue(isset($configuration['key']));
+        $this->assertEquals('value', $configuration['key']);
+
+        $this->assertFalse(isset($configuration['key2']));
+        unset($configuration['key']);
+        $this->assertFalse(isset($configuration['key']));
+
+        $configuration['key2'] = 'value2';
+        $this->assertTrue(isset($configuration['key2']));
+        $this->assertEquals('value2', $configuration['key2']);
+    }
+
+    public function testGetOnNonExistentKeyShouldReturnDefaultValue()
+    {
+        $conf = new Configuration();
+        $this->assertEquals('booba', $conf->get('hooba', 'booba'));
+        $this->assertEquals(null, $conf->get('hooba'));
+    }
+
+    public function testSetHasGetRemove()
+    {
+        $configuration = new Configuration(['key' => 'value']);
+
+        $this->assertTrue($configuration->has('key'));
+        $this->assertEquals('value', $configuration->get('key'));
+
+        $this->assertFalse($configuration->has('key2'));
+        $configuration->remove('key');
+        $this->assertFalse($configuration->has('key'));
+
+        $configuration->set('key2', 'value2');
+        $this->assertTrue($configuration->has('key2'));
+        $this->assertEquals('value2', $configuration->get('key2'));
+    }
+
+    public function testIterator()
+    {
+        $data = [
+            'key1' => 'value1',
+            'key2' => 'value2',
+            'key3' => 'value3',
+        ];
+
+        $captured = [];
+        $conf     = new Configuration($data);
+
+        foreach ($conf as $key => $value) {
+            $captured[$key] = $value;
+        }
+
+        $this->assertEquals($data, $captured);
+    }
+
+    public function testAll()
+    {
+        $data = [
+            'key1' => 'value1',
+            'key2' => 'value2',
+            'key3' => 'value3',
+        ];
+
+        $conf = new Configuration($data);
+        $this->assertEquals($data, $conf->all());
+    }
+}
diff --git a/tests/Alchemy/BinaryDriver/Exceptions/ExecutionFailureExceptionTest.php b/tests/Alchemy/BinaryDriver/Exceptions/ExecutionFailureExceptionTest.php
new file mode 100644
index 0000000..a21bcf1
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/Exceptions/ExecutionFailureExceptionTest.php
@@ -0,0 +1,33 @@
+createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $process = $this->createProcessMock(1, false, '--helloworld--', null, "Error Output", true);
+        try{
+            $runner->run($process, new \SplObjectStorage(), false);
+            $this->fail('An exception should have been raised');
+        }
+        catch (ExecutionFailureException $e){
+            $this->assertEquals("--helloworld--", $e->getCommand());
+            $this->assertEquals("Error Output", $e->getErrorOutput());
+        }
+
+    }
+
+}
\ No newline at end of file
diff --git a/tests/Alchemy/BinaryDriver/LTSProcessBuilder.php b/tests/Alchemy/BinaryDriver/LTSProcessBuilder.php
new file mode 100644
index 0000000..dc6c033
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/LTSProcessBuilder.php
@@ -0,0 +1,54 @@
+arguments = $arguments;
+        parent::__construct($arguments);
+    }
+
+    public function setArguments(array $arguments)
+    {
+        $this->arguments = $arguments;
+
+        return $this;
+    }
+
+    public function setPrefix($prefix)
+    {
+        $this->prefix = $prefix;
+
+        return $this;
+    }
+
+    public function setTimeout($timeout)
+    {
+        $this->timeout = $timeout;
+
+        return $this;
+    }
+
+    public function getProcess()
+    {
+        if (!$this->prefix && !count($this->arguments)) {
+            throw new LogicException('You must add() command arguments before calling getProcess().');
+        }
+
+        $args = $this->prefix ? array_merge(array($this->prefix), $this->arguments) : $this->arguments;
+        $script = implode(' ', array_map('escapeshellarg', $args));
+
+        return new Process($script, null, null, null, $this->timeout);
+    }
+}
diff --git a/tests/Alchemy/BinaryDriver/LTSProcessBuilderFactoryTest.php b/tests/Alchemy/BinaryDriver/LTSProcessBuilderFactoryTest.php
new file mode 100644
index 0000000..4ab1d30
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/LTSProcessBuilderFactoryTest.php
@@ -0,0 +1,28 @@
+markTestSkipped('ProcessBuilder is not available.');
+            return;
+        }
+
+        parent::setUp();
+    }
+
+    protected function getProcessBuilderFactory($binary)
+    {
+        $factory = new ProcessBuilderFactory($binary);
+        $factory->setBuilder(new LTSProcessBuilder());
+        ProcessBuilderFactory::$emulateSfLTS = false;
+        $factory->useBinary($binary);
+
+        return $factory;
+    }
+}
diff --git a/tests/Alchemy/BinaryDriver/Listeners/DebugListenerTest.php b/tests/Alchemy/BinaryDriver/Listeners/DebugListenerTest.php
new file mode 100644
index 0000000..29bf5f5
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/Listeners/DebugListenerTest.php
@@ -0,0 +1,34 @@
+on('debug', function ($line) use (&$lines) {
+            $lines[] = $line;
+        });
+        $listener->handle(Process::ERR, "first line\nsecond line");
+        $listener->handle(Process::OUT, "cool output");
+        $listener->handle('unknown', "lalala");
+        $listener->handle(Process::OUT, "another output\n");
+
+        $expected = [
+            '[ERROR] first line',
+            '[ERROR] second line',
+            '[OUT] cool output',
+            '[OUT] another output',
+            '[OUT] ',
+        ];
+
+        $this->assertEquals($expected, $lines);
+    }
+}
diff --git a/tests/Alchemy/BinaryDriver/Listeners/ListenersTest.php b/tests/Alchemy/BinaryDriver/Listeners/ListenersTest.php
new file mode 100644
index 0000000..67f9934
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/Listeners/ListenersTest.php
@@ -0,0 +1,93 @@
+register($listener);
+
+        $n = 0;
+        $listener->on('received', function ($type, $data) use (&$n, &$capturedType, &$capturedData) {
+            $n++;
+            $capturedData = $data;
+            $capturedType = $type;
+        });
+
+        $type = 'type';
+        $data = 'data';
+
+        $listener->handle($type, $data);
+        $listener->handle($type, $data);
+
+        $listeners->unregister($listener);
+
+        $listener->handle($type, $data);
+
+        $this->assertEquals(3, $n);
+        $this->assertEquals($type, $capturedType);
+        $this->assertEquals($data, $capturedData);
+    }
+
+    public function testRegisterAndForwardThenUnregister()
+    {
+        $listener = new MockListener();
+        $target   = new EventEmitter();
+
+        $n = 0;
+        $target->on('received', function ($type, $data) use (&$n, &$capturedType, &$capturedData) {
+            $n++;
+            $capturedData = $data;
+            $capturedType = $type;
+        });
+
+        $m = 0;
+        $listener->on('received', function ($type, $data) use (&$m, &$capturedType2, &$capturedData2) {
+            $m++;
+            $capturedData2 = $data;
+            $capturedType2 = $type;
+        });
+
+        $listeners = new Listeners();
+        $listeners->register($listener, $target);
+
+        $type = 'type';
+        $data = 'data';
+
+        $listener->handle($type, $data);
+        $listener->handle($type, $data);
+
+        $listeners->unregister($listener, $target);
+
+        $listener->handle($type, $data);
+
+        $this->assertEquals(2, $n);
+        $this->assertEquals(3, $m);
+        $this->assertEquals($type, $capturedType);
+        $this->assertEquals($data, $capturedData);
+        $this->assertEquals($type, $capturedType2);
+        $this->assertEquals($data, $capturedData2);
+    }
+}
+
+class MockListener extends EventEmitter implements ListenerInterface
+{
+    public function handle($type, $data)
+    {
+        $this->emit('received', [$type, $data]);
+    }
+
+    public function forwardedEvents()
+    {
+        return ['received'];
+    }
+}
diff --git a/tests/Alchemy/BinaryDriver/NONLTSProcessBuilderFactoryTest.php b/tests/Alchemy/BinaryDriver/NONLTSProcessBuilderFactoryTest.php
new file mode 100644
index 0000000..fe5f343
--- /dev/null
+++ b/tests/Alchemy/BinaryDriver/NONLTSProcessBuilderFactoryTest.php
@@ -0,0 +1,15 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Alchemy\Tests\BinaryDriver;
+
+use Alchemy\BinaryDriver\ProcessRunner;
+use Alchemy\BinaryDriver\BinaryDriverTestCase;
+use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
+use Alchemy\BinaryDriver\Listeners\ListenerInterface;
+use Evenement\EventEmitter;
+use Symfony\Component\Process\Exception\RuntimeException as ProcessRuntimeException;
+
+class ProcessRunnerTest extends BinaryDriverTestCase
+{
+    public function getProcessRunner($logger)
+    {
+        return new ProcessRunner($logger, 'test-runner');
+    }
+
+    public function testRunSuccessFullProcess()
+    {
+        $logger = $this->createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $process = $this->createProcessMock(1, true, '--helloworld--', "Kikoo Romain", null, true);
+
+        $logger
+            ->expects($this->never())
+            ->method('error');
+        $logger
+            ->expects($this->exactly(2))
+            ->method('info');
+
+        $this->assertEquals('Kikoo Romain', $runner->run($process, new \SplObjectStorage(), false));
+    }
+
+    public function testRunSuccessFullProcessBypassingErrors()
+    {
+        $logger = $this->createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $process = $this->createProcessMock(1, true, '--helloworld--', "Kikoo Romain", null, true);
+
+        $logger
+            ->expects($this->never())
+            ->method('error');
+        $logger
+            ->expects($this->exactly(2))
+            ->method('info');
+
+        $this->assertEquals('Kikoo Romain', $runner->run($process, new \SplObjectStorage(), true));
+    }
+
+    public function testRunFailingProcess()
+    {
+        $logger = $this->createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $process = $this->createProcessMock(1, false, '--helloworld--', null, null, true);
+
+        $logger
+            ->expects($this->once())
+            ->method('error');
+        $logger
+            ->expects($this->once())
+            ->method('info');
+
+        try {
+            $runner->run($process, new \SplObjectStorage(), false);
+            $this->fail('An exception should have been raised');
+        } catch (ExecutionFailureException $e) {
+
+        }
+    }
+
+    public function testRunFailingProcessWithException()
+    {
+        $logger = $this->createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $exception = new ProcessRuntimeException('Process Failed');
+        $process = $this->getMockBuilder('Symfony\Component\Process\Process')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $process->expects($this->once())
+            ->method('run')
+            ->will($this->throwException($exception));
+
+        $logger
+            ->expects($this->once())
+            ->method('error');
+        $logger
+            ->expects($this->once())
+            ->method('info');
+
+        try {
+            $runner->run($process, new \SplObjectStorage(), false);
+            $this->fail('An exception should have been raised');
+        } catch (ExecutionFailureException $e) {
+            $this->assertEquals($exception, $e->getPrevious());
+        }
+    }
+
+    public function testRunfailingProcessBypassingErrors()
+    {
+        $logger = $this->createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $process = $this->createProcessMock(1, false, '--helloworld--', 'Hello output', null, true);
+
+        $logger
+            ->expects($this->once())
+            ->method('error');
+        $logger
+            ->expects($this->once())
+            ->method('info');
+
+        $this->assertNull($runner->run($process, new \SplObjectStorage(), true));
+    }
+
+    public function testRunFailingProcessWithExceptionBypassingErrors()
+    {
+        $logger = $this->createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $exception = new ProcessRuntimeException('Process Failed');
+        $process = $this->getMockBuilder('Symfony\Component\Process\Process')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $process->expects($this->once())
+            ->method('run')
+            ->will($this->throwException($exception));
+
+        $logger
+            ->expects($this->once())
+            ->method('error');
+        $logger
+            ->expects($this->once())
+            ->method('info');
+
+        $this->assertNull($runner->run($process, new \SplObjectStorage(), true));
+    }
+
+    public function testRunSuccessFullProcessWithHandlers()
+    {
+        $logger = $this->createLoggerMock();
+        $runner = $this->getProcessRunner($logger);
+
+        $capturedCallback = null;
+
+        $process = $this->createProcessMock(1, true, '--helloworld--', "Kikoo Romain", null, true);
+        $process->expects($this->once())
+            ->method('run')
+            ->with($this->isInstanceOf('Closure'))
+            ->will($this->returnCallback(function ($callback) use (&$capturedCallback) {
+                $capturedCallback = $callback;
+            }));
+
+        $logger
+            ->expects($this->never())
+            ->method('error');
+        $logger
+            ->expects($this->exactly(2))
+            ->method('info');
+
+        $listener = new TestListener();
+        $storage = new \SplObjectStorage();
+        $storage->attach($listener);
+
+        $capturedType = $capturedData = null;
+
+        $listener->on('received', function ($type, $data) use (&$capturedType, &$capturedData) {
+            $capturedData = $data;
+            $capturedType = $type;
+        });
+
+        $this->assertEquals('Kikoo Romain', $runner->run($process, $storage, false));
+
+        $type = 'err';
+        $data = 'data';
+
+        $capturedCallback($type, $data);
+
+        $this->assertEquals($data, $capturedData);
+        $this->assertEquals($type, $capturedType);
+    }
+}
+
+class TestListener extends EventEmitter implements ListenerInterface
+{
+    public function handle($type, $data)
+    {
+        return $this->emit('received', array($type, $data));
+    }
+
+    public function forwardedEvents()
+    {
+        return array();
+    }
+}
diff --git a/tests/BaseTestCase.php b/tests/BaseTestCase.php
deleted file mode 100644
index f32ff49..0000000
--- a/tests/BaseTestCase.php
+++ /dev/null
@@ -1,63 +0,0 @@
-setExpectedException($exception, $message);
-        }
-
-        public static function assertStringContainsString($needle, $haystack, $message = '')
-        {
-            self::assertContains($needle, $haystack, $message);
-        }
-
-        public static function assertStringNotContainsString($needle, $haystack, $message = '')
-        {
-            self::assertNotContains($needle, $haystack, $message);
-        }
-    }
-} else {
-    class BaseTestCase extends TestCase
-    {
-        public function assertScalar($value, $message = '')
-        {
-            $this->assertTrue(is_scalar($value), $message);
-        }
-    }
-}
diff --git a/tests/FFMpeg/BaseTestCase.php b/tests/FFMpeg/BaseTestCase.php
new file mode 100644
index 0000000..30622e2
--- /dev/null
+++ b/tests/FFMpeg/BaseTestCase.php
@@ -0,0 +1,13 @@
+assertTrue(is_scalar($value), $message);
+    }
+}
diff --git a/tests/Functional/AdvancedMediaTest.php b/tests/FFMpeg/Functional/AdvancedMediaTest.php
similarity index 64%
rename from tests/Functional/AdvancedMediaTest.php
rename to tests/FFMpeg/Functional/AdvancedMediaTest.php
index cb6d904..f0616e6 100644
--- a/tests/Functional/AdvancedMediaTest.php
+++ b/tests/FFMpeg/Functional/AdvancedMediaTest.php
@@ -13,66 +13,72 @@ class AdvancedMediaTest extends FunctionalTestCase
     /**
      * Path prefix to avoid conflicts with another tests.
      */
-    const OUTPUT_PATH_PREFIX = 'output/advanced_media_';
+    public const OUTPUT_PATH_PREFIX = 'output/advanced_media_';
 
     public function testRunWithoutComplexFilterTestExtractAudio()
     {
         $ffmpeg = $this->getFFMpeg();
-        $inputs = array(realpath(__DIR__ . '/../files/Test.ogv'));
+        $inputs = [realpath(__DIR__.'/../files/Test.ogv')];
         $format = new Mp3();
-        $output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'extracted_with_map.mp3';
+        $output = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'extracted_with_map.mp3';
 
         // You can run it without -filter_complex, just using -map.
         $advancedMedia = $ffmpeg->openAdvanced($inputs);
         $advancedMedia
-            ->map(array('0:a'), $format, $output)
+            ->map(['0:a'], $format, $output)
             ->save();
 
         $this->assertFileExists($output);
-        $this->assertEquals('MP2/3 (MPEG audio layer 2/3)',
-            $ffmpeg->open($output)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'MP2/3 (MPEG audio layer 2/3)',
+            $ffmpeg->open($output)->getFormat()->get('format_long_name')
+        );
         unlink($output);
     }
 
     public function testAudio()
     {
         $ffmpeg = $this->getFFMpeg();
-        $inputs = array(realpath(__DIR__ . '/../files/Audio.mp3'));
+        $inputs = [realpath(__DIR__.'/../files/Audio.mp3')];
         $format = new Mp3();
         $format->setAudioKiloBitrate(30);
-        $output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'audio_test.mp3';
+        $output = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'audio_test.mp3';
 
         $advancedMedia = $ffmpeg->openAdvanced($inputs);
         $advancedMedia
-            ->map(array('0:a'), $format, $output)
+            ->map(['0:a'], $format, $output)
             ->save();
 
         $this->assertFileExists($output);
-        $this->assertEquals('MP2/3 (MPEG audio layer 2/3)',
-            $ffmpeg->open($output)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'MP2/3 (MPEG audio layer 2/3)',
+            $ffmpeg->open($output)->getFormat()->get('format_long_name')
+        );
         unlink($output);
     }
 
     public function testMultipleInputs()
     {
         $ffmpeg = $this->getFFMpeg();
-        $inputs = array(
-            realpath(__DIR__ . '/../files/portrait.MOV'),
-            realpath(__DIR__ . '/../files/portrait.MOV')
-        );
+        $inputs = [
+            realpath(__DIR__.'/../files/portrait.MOV'),
+            realpath(__DIR__.'/../files/portrait.MOV'),
+        ];
         $format = new X264('aac', 'libx264');
-        $output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'multiple_inputs_test.mp4';
+        $output = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'multiple_inputs_test.mp4';
 
         $advancedMedia = $ffmpeg->openAdvanced($inputs);
         $advancedMedia->filters()
             ->custom('[0:v][1:v]', 'hstack', '[v]');
         $advancedMedia
-            ->map(array('0:a', '[v]'), $format, $output)
+            ->map(['0:a', '[v]'], $format, $output)
             ->save();
 
         $this->assertFileExists($output);
-        $this->assertEquals('QuickTime / MOV',
-            $ffmpeg->open($output)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'QuickTime / MOV',
+            $ffmpeg->open($output)->getFormat()->get('format_long_name')
+        );
         unlink($output);
     }
 
@@ -84,13 +90,13 @@ class AdvancedMediaTest extends FunctionalTestCase
         $ffmpeg = $this->getFFMpeg();
         // in this test we use only computed inputs
         // and can ignore -i part of the command, pass empty inputs array.
-        $inputs = array();
+        $inputs = [];
         $formatX264 = new X264('aac', 'libx264');
         $formatMp3 = new Mp3();
 
-        $outputMp3 = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'test_multiple_outputs.mp3';
-        $outputVideo1 = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'test_multiple_outputs_v1.mp4';
-        $outputVideo2 = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'test_multiple_outputs_v2.mp4';
+        $outputMp3 = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'test_multiple_outputs.mp3';
+        $outputVideo1 = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'test_multiple_outputs_v1.mp4';
+        $outputVideo2 = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'test_multiple_outputs_v2.mp4';
 
         $advancedMedia = $ffmpeg->openAdvanced($inputs);
         $advancedMedia->filters()
@@ -100,25 +106,30 @@ class AdvancedMediaTest extends FunctionalTestCase
             ->custom('[v1]', 'negate', '[v1negate]')
             ->custom('[v2]', 'edgedetect', '[v2edgedetect]');
         $advancedMedia
-            ->map(array('[a]'), $formatMp3, $outputMp3)
-            ->map(array('[v1negate]'), $formatX264, $outputVideo1)
-            ->map(array('[v2edgedetect]'), $formatX264, $outputVideo2)
+            ->map(['[a]'], $formatMp3, $outputMp3)
+            ->map(['[v1negate]'], $formatX264, $outputVideo1)
+            ->map(['[v2edgedetect]'], $formatX264, $outputVideo2)
             ->save();
 
-
         $this->assertFileExists($outputMp3);
-        $this->assertEquals('MP2/3 (MPEG audio layer 2/3)',
-            $ffmpeg->open($outputMp3)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'MP2/3 (MPEG audio layer 2/3)',
+            $ffmpeg->open($outputMp3)->getFormat()->get('format_long_name')
+        );
         unlink($outputMp3);
 
         $this->assertFileExists($outputVideo1);
-        $this->assertEquals('QuickTime / MOV',
-            $ffmpeg->open($outputVideo1)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'QuickTime / MOV',
+            $ffmpeg->open($outputVideo1)->getFormat()->get('format_long_name')
+        );
         unlink($outputVideo1);
 
         $this->assertFileExists($outputVideo2);
-        $this->assertEquals('QuickTime / MOV',
-            $ffmpeg->open($outputVideo2)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'QuickTime / MOV',
+            $ffmpeg->open($outputVideo2)->getFormat()->get('format_long_name')
+        );
         unlink($outputVideo2);
     }
 
@@ -129,21 +140,23 @@ class AdvancedMediaTest extends FunctionalTestCase
     public function testTestSrcFilterTestSineFilter()
     {
         $ffmpeg = $this->getFFMpeg();
-        $inputs = array(realpath(__DIR__ . '/../files/Test.ogv'));
+        $inputs = [realpath(__DIR__.'/../files/Test.ogv')];
         $format = new X264('aac', 'libx264');
-        $output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'testsrc.mp4';
+        $output = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'testsrc.mp4';
 
         $advancedMedia = $ffmpeg->openAdvanced($inputs);
         $advancedMedia->filters()
             ->sine('[a]', 10)
             ->testSrc('[v]', TestSrcFilter::TESTSRC, '160x120', 10);
         $advancedMedia
-            ->map(array('[a]', '[v]'), $format, $output)
+            ->map(['[a]', '[v]'], $format, $output)
             ->save();
 
         $this->assertFileExists($output);
-        $this->assertEquals('QuickTime / MOV',
-            $ffmpeg->open($output)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'QuickTime / MOV',
+            $ffmpeg->open($output)->getFormat()->get('format_long_name')
+        );
         unlink($output);
     }
 
@@ -160,14 +173,15 @@ class AdvancedMediaTest extends FunctionalTestCase
         $ffmpegVersion = $ffmpeg->getFFMpegDriver()->getVersion();
         if (version_compare($ffmpegVersion, $xStack->getMinimalFFMpegVersion(), '<')) {
             $this->markTestSkipped('XStack filter is supported starting from ffmpeg version '
-                . $xStack->getMinimalFFMpegVersion() . ', your version is '
-                . $ffmpegVersion);
+                .$xStack->getMinimalFFMpegVersion().', your version is '
+                .$ffmpegVersion);
+
             return;
         }
 
-        $inputs = array(realpath(__DIR__ . '/../files/Test.ogv'));
+        $inputs = [realpath(__DIR__.'/../files/Test.ogv')];
         $format = new X264('aac', 'libx264');
-        $output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'xstack_test.mp4';
+        $output = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'xstack_test.mp4';
 
         $advancedMedia = $ffmpeg->openAdvanced($inputs);
         $advancedMedia->filters()
@@ -176,25 +190,31 @@ class AdvancedMediaTest extends FunctionalTestCase
             ->testSrc('[v2]', TestSrcFilter::TESTSRC, '160x120', 5)
             ->testSrc('[v3]', TestSrcFilter::TESTSRC, '160x120', 5)
             ->testSrc('[v4]', TestSrcFilter::TESTSRC, '160x120', 5)
-            ->xStack('[v1][v2][v3][v4]',
-                XStackFilter::LAYOUT_2X2, 4, '[v]');
+            ->xStack(
+                '[v1][v2][v3][v4]',
+                XStackFilter::LAYOUT_2X2,
+                4,
+                '[v]'
+            );
         $advancedMedia
-            ->map(array('[a]', '[v]'), $format, $output)
+            ->map(['[a]', '[v]'], $format, $output)
             ->save();
 
         $this->assertFileExists($output);
-        $this->assertEquals('QuickTime / MOV',
-            $ffmpeg->open($output)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'QuickTime / MOV',
+            $ffmpeg->open($output)->getFormat()->get('format_long_name')
+        );
         unlink($output);
     }
 
     public function testOfCompatibilityWithExistedFilters()
     {
         $ffmpeg = $this->getFFMpeg();
-        $inputs = array(realpath(__DIR__ . '/../files/Test.ogv'));
-        $watermark = realpath(__DIR__ . '/../files/watermark.png');
+        $inputs = [realpath(__DIR__.'/../files/Test.ogv')];
+        $watermark = realpath(__DIR__.'/../files/watermark.png');
         $format = new X264('aac', 'libx264');
-        $output = __DIR__ . '/' . self::OUTPUT_PATH_PREFIX . 'test_of_compatibility_with_existed_filters.mp4';
+        $output = __DIR__.'/'.self::OUTPUT_PATH_PREFIX.'test_of_compatibility_with_existed_filters.mp4';
 
         $advancedMedia = $ffmpeg->openAdvanced($inputs);
         $advancedMedia->filters()
@@ -207,12 +227,14 @@ class AdvancedMediaTest extends FunctionalTestCase
             //->watermark('[0:v]', $watermark, '[v]')
             ->pad('[0:v]', new Dimension(300, 100), '[v]');
         $advancedMedia
-            ->map(array('0:a', '[v]'), $format, $output)
+            ->map(['0:a', '[v]'], $format, $output)
             ->save();
 
         $this->assertFileExists($output);
-        $this->assertEquals('QuickTime / MOV',
-            $ffmpeg->open($output)->getFormat()->get('format_long_name'));
+        $this->assertEquals(
+            'QuickTime / MOV',
+            $ffmpeg->open($output)->getFormat()->get('format_long_name')
+        );
         unlink($output);
     }
 
@@ -221,14 +243,14 @@ class AdvancedMediaTest extends FunctionalTestCase
         $ffmpeg = $this->getFFMpeg();
         $format = new X264();
 
-        $advancedMedia1 = $ffmpeg->openAdvanced(array(__FILE__));
+        $advancedMedia1 = $ffmpeg->openAdvanced([__FILE__]);
         $advancedMedia1
-            ->map(array('test'), $format, 'outputFile.mp4', false);
+            ->map(['test'], $format, 'outputFile.mp4', false);
         $this->assertStringContainsString('acodec', $advancedMedia1->getFinalCommand());
 
-        $advancedMedia2 = $ffmpeg->openAdvanced(array(__FILE__));
+        $advancedMedia2 = $ffmpeg->openAdvanced([__FILE__]);
         $advancedMedia2
-            ->map(array('test'), $format, 'outputFile.mp4', true);
+            ->map(['test'], $format, 'outputFile.mp4', true);
         $this->assertStringNotContainsString('acodec', $advancedMedia2->getFinalCommand());
     }
 
@@ -237,32 +259,42 @@ class AdvancedMediaTest extends FunctionalTestCase
         $ffmpeg = $this->getFFMpeg();
         $format = new X264();
 
-        $advancedMedia1 = $ffmpeg->openAdvanced(array(__FILE__));
-        $advancedMedia1->map(array('test'), $format,
-            'outputFile.mp4', false, false);
+        $advancedMedia1 = $ffmpeg->openAdvanced([__FILE__]);
+        $advancedMedia1->map(
+            ['test'],
+            $format,
+            'outputFile.mp4',
+            false,
+            false
+        );
         $this->assertStringContainsString('vcodec', $advancedMedia1->getFinalCommand());
 
-        $advancedMedia2 = $ffmpeg->openAdvanced(array(__FILE__));
-        $advancedMedia2->map(array('test'), $format,
-            'outputFile.mp4', false, true);
+        $advancedMedia2 = $ffmpeg->openAdvanced([__FILE__]);
+        $advancedMedia2->map(
+            ['test'],
+            $format,
+            'outputFile.mp4',
+            false,
+            true
+        );
         $this->assertStringNotContainsString('vcodec', $advancedMedia2->getFinalCommand());
     }
 
     public function testGlobalOptions()
     {
-        $configuration = array(
+        $configuration = [
             'ffmpeg.threads' => 3,
             'ffmpeg.filter_threads' => 13,
             'ffmpeg.filter_complex_threads' => 24,
-        );
+        ];
 
         $ffmpeg = $this->getFFMpeg($configuration);
-        $advancedMedia = $ffmpeg->openAdvanced(array(__FILE__));
+        $advancedMedia = $ffmpeg->openAdvanced([__FILE__]);
         $command = $advancedMedia->getFinalCommand();
 
         foreach ($configuration as $optionName => $optionValue) {
             $optionName = str_replace('ffmpeg.', '', $optionName);
-            $this->assertStringContainsString('-' . $optionName . ' ' . $optionValue, $command);
+            $this->assertStringContainsString('-'.$optionName.' '.$optionValue, $command);
         }
     }
 }
diff --git a/tests/Functional/AudioConcatenationTest.php b/tests/FFMpeg/Functional/AudioConcatenationTest.php
similarity index 79%
rename from tests/Functional/AudioConcatenationTest.php
rename to tests/FFMpeg/Functional/AudioConcatenationTest.php
index c5bbc9b..cd9f195 100644
--- a/tests/Functional/AudioConcatenationTest.php
+++ b/tests/FFMpeg/Functional/AudioConcatenationTest.php
@@ -2,19 +2,16 @@
 
 namespace Tests\FFMpeg\Functional;
 
-use FFMpeg\Format\Audio\Mp3;
-use FFMpeg\Media\Audio;
-
 class AudioConcatenationTest extends FunctionalTestCase
 {
     public function testSimpleAudioFileConcatTest()
     {
         $ffmpeg = $this->getFFMpeg();
 
-        $files = array(
+        $files = [
             realpath(__DIR__ . '/../files/Jahzzar_-_05_-_Siesta.mp3'),
             realpath(__DIR__ . '/../files/02_-_Favorite_Secrets.mp3'),
-        );
+        ];
 
         $audio = $ffmpeg->open(reset($files));
 
@@ -23,7 +20,7 @@ class AudioConcatenationTest extends FunctionalTestCase
         clearstatcache();
         $filename = __DIR__ . '/output/concat-output.mp3';
 
-        $audio->concat($files)->saveFromSameCodecs($filename, TRUE);
+        $audio->concat($files)->saveFromSameCodecs($filename, true);
 
         $this->assertFileExists($filename);
         unlink($filename);
diff --git a/tests/Functional/FFProbeTest.php b/tests/FFMpeg/Functional/FFProbeTest.php
similarity index 81%
rename from tests/Functional/FFProbeTest.php
rename to tests/FFMpeg/Functional/FFProbeTest.php
index 160793f..213920e 100644
--- a/tests/Functional/FFProbeTest.php
+++ b/tests/FFMpeg/Functional/FFProbeTest.php
@@ -9,20 +9,19 @@ class FFProbeTest extends FunctionalTestCase
     public function testProbeOnFile()
     {
         $ffprobe = FFProbe::create();
-        $this->assertGreaterThan(0, count($ffprobe->streams(__DIR__ . '/../files/Audio.mp3')));
+        $this->assertGreaterThan(0, count($ffprobe->streams(__DIR__.'/../files/Audio.mp3')));
     }
 
     public function testValidateExistingFile()
     {
         $ffprobe = FFProbe::create();
-        $this->assertTrue($ffprobe->isValid(__DIR__ . '/../files/sample.3gp'));
+        $this->assertTrue($ffprobe->isValid(__DIR__.'/../files/sample.3gp'));
     }
 
-
     public function testValidateNonExistingFile()
     {
         $ffprobe = FFProbe::create();
-        $this->assertFalse($ffprobe->isValid(__DIR__ . '/../files/WrongFile.mp4'));
+        $this->assertFalse($ffprobe->isValid(__DIR__.'/../files/WrongFile.mp4'));
     }
 
     public function testProbeOnNonExistantFile()
diff --git a/tests/Functional/FunctionalTestCase.php b/tests/FFMpeg/Functional/FunctionalTestCase.php
similarity index 63%
rename from tests/Functional/FunctionalTestCase.php
rename to tests/FFMpeg/Functional/FunctionalTestCase.php
index 6a2656a..5c8b670 100644
--- a/tests/Functional/FunctionalTestCase.php
+++ b/tests/FFMpeg/Functional/FunctionalTestCase.php
@@ -12,8 +12,8 @@ abstract class FunctionalTestCase extends BaseTestCase
      *
      * @return FFMpeg
      */
-    public function getFFMpeg($configuration = array())
+    public function getFFMpeg($configuration = [])
     {
-        return FFMpeg::create(array_merge(array('timeout' => 300), $configuration));
+        return FFMpeg::create(array_merge(['timeout' => 300], $configuration));
     }
 }
diff --git a/tests/Functional/VideoTranscodeTest.php b/tests/FFMpeg/Functional/VideoTranscodeTest.php
similarity index 76%
rename from tests/Functional/VideoTranscodeTest.php
rename to tests/FFMpeg/Functional/VideoTranscodeTest.php
index bc5dfe0..abfe233 100644
--- a/tests/Functional/VideoTranscodeTest.php
+++ b/tests/FFMpeg/Functional/VideoTranscodeTest.php
@@ -12,13 +12,13 @@ class VideoTranscodeTest extends FunctionalTestCase
 {
     public function testSimpleTranscodeX264()
     {
-        $filename = __DIR__ . '/output/output-x264.mp4';
+        $filename = __DIR__.'/output/output-x264.mp4';
         if (is_file($filename)) {
-            unlink(__DIR__ . '/output/output-x264.mp4');
+            unlink(__DIR__.'/output/output-x264.mp4');
         }
 
         $ffmpeg = $this->getFFMpeg();
-        $video = $ffmpeg->open(__DIR__ . '/../files/Test.ogv');
+        $video = $ffmpeg->open(__DIR__.'/../files/Test.ogv');
 
         $this->assertInstanceOf('FFMpeg\Media\Video', $video);
 
@@ -42,13 +42,13 @@ class VideoTranscodeTest extends FunctionalTestCase
 
     public function testAacTranscodeX264()
     {
-        $filename = __DIR__ . '/output/output-x264_2.mp4';
+        $filename = __DIR__.'/output/output-x264_2.mp4';
         if (is_file($filename)) {
-            unlink(__DIR__ . '/output/output-x264_2.mp4');
+            unlink(__DIR__.'/output/output-x264_2.mp4');
         }
 
         $ffmpeg = $this->getFFMpeg();
-        $video = $ffmpeg->open(__DIR__ . '/../files/sample.3gp');
+        $video = $ffmpeg->open(__DIR__.'/../files/sample.3gp');
 
         $this->assertInstanceOf('FFMpeg\Media\Video', $video);
 
@@ -70,39 +70,37 @@ class VideoTranscodeTest extends FunctionalTestCase
         unlink($filename);
     }
 
-    /**
-     */
     public function testTranscodeInvalidFile()
     {
         $this->expectException('\FFMpeg\Exception\RuntimeException');
         $ffmpeg = $this->getFFMpeg();
-        $ffmpeg->open(__DIR__ . '/../files/UnknownFileTest.ogv');
+        $ffmpeg->open(__DIR__.'/../files/UnknownFileTest.ogv');
     }
 
     public function testSaveInvalidForgedVideo()
     {
         $ffmpeg = $this->getFFMpeg();
-        $video = new Video(__DIR__ . '/../files/UnknownFileTest.ogv', $ffmpeg->getFFMpegDriver(), $ffmpeg->getFFProbe());
+        $video = new Video(__DIR__.'/../files/UnknownFileTest.ogv', $ffmpeg->getFFMpegDriver(), $ffmpeg->getFFProbe());
 
         $this->expectException('\FFMpeg\Exception\RuntimeException');
-        $video->save(new X264('aac'), __DIR__ . '/output/output-x264.mp4');
+        $video->save(new X264('aac'), __DIR__.'/output/output-x264.mp4');
     }
 
     public function testTranscodePortraitVideo()
     {
         $info = $this->getNameAndVersion();
 
-        if ($info['name'] === 'avconv' && version_compare($info['version'], '0.9', '<')) {
+        if ('avconv' === $info['name'] && version_compare($info['version'], '0.9', '<')) {
             $this->markTestSkipped('This version of avconv is buggy and does not support this test.');
         }
 
-        $filename = __DIR__ . '/output/output-x264.mp4';
+        $filename = __DIR__.'/output/output-x264.mp4';
         if (is_file($filename)) {
-            unlink(__DIR__ . '/output/output-x264.mp4');
+            unlink(__DIR__.'/output/output-x264.mp4');
         }
 
         $ffmpeg = $this->getFFMpeg();
-        $video = $ffmpeg->open(__DIR__ . '/../files/portrait.MOV');
+        $video = $ffmpeg->open(__DIR__.'/../files/portrait.MOV');
 
         $video->filters()
             ->resize(new Dimension(320, 240), ResizeFilter::RESIZEMODE_INSET)
@@ -131,18 +129,18 @@ class VideoTranscodeTest extends FunctionalTestCase
             ->getBinary();
 
         $output = $matches = null;
-        exec($binary . ' -version 2>&1', $output);
+        exec($binary.' -version 2>&1', $output);
 
         if (!isset($output[0])) {
-            return array('name' => null, 'version' => null);
+            return ['name' => null, 'version' => null];
         }
 
         preg_match('/^([a-z]+)\s+version\s+([0-9\.]+)/i', $output[0], $matches);
 
         if (count($matches) > 0) {
-            return array('name' => $matches[1], 'version' => $matches[2]);
+            return ['name' => $matches[1], 'version' => $matches[2]];
         }
 
-        return array('name' => null, 'version' => null);
+        return ['name' => null, 'version' => null];
     }
 }
diff --git a/tests/Functional/output/.placeholder b/tests/FFMpeg/Functional/output/.placeholder
similarity index 100%
rename from tests/Functional/output/.placeholder
rename to tests/FFMpeg/Functional/output/.placeholder
diff --git a/tests/FFMpeg/Unit/Coordinate/AspectRatioTest.php b/tests/FFMpeg/Unit/Coordinate/AspectRatioTest.php
new file mode 100644
index 0000000..0712534
--- /dev/null
+++ b/tests/FFMpeg/Unit/Coordinate/AspectRatioTest.php
@@ -0,0 +1,83 @@
+assertEquals($expected, $ratio->getValue());
+
+        $this->assertEquals($calculatedHeight, $ratio->calculateHeight(240, $modulus));
+        $this->assertEquals($calculatedWidth, $ratio->calculateWidth(320, $modulus));
+    }
+
+    public function provideDimensionsAndExpectedratio()
+    {
+        return [
+            //AR_5_4
+            [720, 576, false, 5 / 4, 400, 192],
+            [720, 577, false, 5 / 4, 400, 192],
+            [720, 620, false, 720 / 620, 372, 206],
+            [720, 576, true, 5 / 4, 400, 192],
+            //AR_ROTATED_4_5
+            [576, 720, false, 4 / 5, 256, 300],
+            [576, 720, true, 4 / 5, 256, 300],
+            //AR_4_3
+            [320, 240, false, 4 / 3, 426, 180],
+            [320, 240, true, 4 / 3, 426, 180],
+            //AR_ROTATED_3_4
+            [240, 320, false, 3 / 4, 240, 320],
+            [240, 320, true, 3 / 4, 240, 320],
+            //AR_16_9
+            [1920, 1080, false, 16 / 9, 568, 136],
+            [1920, 1080, true, 16 / 9, 568, 136],
+            [1280, 720, false, 16 / 9, 568, 136],
+            [1280, 720, true, 16 / 9, 568, 136],
+            [3840, 2160, false, 16 / 9, 568, 136],
+            [3840, 2160, true, 16 / 9, 568, 136],
+            // modulus 4
+            [1920, 1080, false, 16 / 9, 568, 136, 4],
+            [1920, 1080, true, 16 / 9, 568, 136, 4],
+            [1280, 720, false, 16 / 9, 568, 136, 4],
+            [1280, 720, true, 16 / 9, 568, 136, 4],
+            [3840, 2160, false, 16 / 9, 568, 136, 4],
+            [3840, 2160, true, 16 / 9, 568, 136, 4],
+            // modulus 16
+            [1920, 1080, false, 16 / 9, 576, 128, 16],
+            [1920, 1080, true, 16 / 9, 576, 128, 16],
+            [1280, 720, false, 16 / 9, 576, 128, 16],
+            [1280, 720, true, 16 / 9, 576, 128, 16],
+            [3840, 2160, false, 16 / 9, 576, 128, 16],
+            [3840, 2160, true, 16 / 9, 576, 128, 16],
+            //AR_ROTATED_9_16
+            [1080, 1920, false, 9 / 16, 180, 426],
+            [1080, 1920, true, 9 / 16, 180, 426],
+            [720, 1280, false, 9 / 16, 180, 426],
+            [720, 1280, true, 9 / 16, 180, 426],
+            [2160, 3840, false, 9 / 16, 180, 426],
+            [2160, 3840, true, 9 / 16, 180, 426],
+            //AR_3_2
+            [360, 240, false, 3 / 2, 480, 160],
+            [360, 240, true, 3 / 2, 480, 160],
+            //AR_ROTATED_2_3
+            [240, 360, false, 2 / 3, 214, 360],
+            [240, 360, true, 2 / 3, 214, 360],
+            //AR_5_3
+            //AR_ROTATED_3_5
+            //AR_1_1
+            //AR_1_DOT_85_1
+            //AR_ROTATED_1_DOT_85
+            //AR_2_DOT_39_1
+            //AR_ROTATED_2_DOT_39
+        ];
+    }
+}
diff --git a/tests/Unit/Coordinate/DimensionTest.php b/tests/FFMpeg/Unit/Coordinate/DimensionTest.php
similarity index 75%
rename from tests/Unit/Coordinate/DimensionTest.php
rename to tests/FFMpeg/Unit/Coordinate/DimensionTest.php
index 13854fc..3f7d471 100644
--- a/tests/Unit/Coordinate/DimensionTest.php
+++ b/tests/FFMpeg/Unit/Coordinate/DimensionTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Coordinate;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Coordinate\Dimension;
+use Tests\FFMpeg\Unit\TestCase;
 
 class DimensionTest extends TestCase
 {
@@ -18,15 +18,15 @@ class DimensionTest extends TestCase
 
     public function provideInvalidDimensions()
     {
-        return array(
-            array(320, 0),
-            array(320, -10),
-            array(0, 240),
-            array(-10, 240),
-            array(0, 0),
-            array(0, -10),
-            array(-10, 0),
-        );
+        return [
+            [320, 0],
+            [320, -10],
+            [0, 240],
+            [-10, 240],
+            [0, 0],
+            [0, -10],
+            [-10, 0],
+        ];
     }
 
     public function testGetters()
diff --git a/tests/Unit/Coordinate/FrameRateTest.php b/tests/FFMpeg/Unit/Coordinate/FrameRateTest.php
similarity index 88%
rename from tests/Unit/Coordinate/FrameRateTest.php
rename to tests/FFMpeg/Unit/Coordinate/FrameRateTest.php
index da561c8..3f95eb2 100644
--- a/tests/Unit/Coordinate/FrameRateTest.php
+++ b/tests/FFMpeg/Unit/Coordinate/FrameRateTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Coordinate;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Coordinate\FrameRate;
+use Tests\FFMpeg\Unit\TestCase;
 
 class FrameRateTest extends TestCase
 {
@@ -24,8 +24,8 @@ class FrameRateTest extends TestCase
 
     public function provideInvalidFrameRates()
     {
-        return array(
-            array(0), array(-1.5), array(-2),
-        );
+        return [
+            [0], [-1.5], [-2],
+        ];
     }
 }
diff --git a/tests/Unit/Coordinate/PointTest.php b/tests/FFMpeg/Unit/Coordinate/PointTest.php
similarity index 71%
rename from tests/Unit/Coordinate/PointTest.php
rename to tests/FFMpeg/Unit/Coordinate/PointTest.php
index 4d633ce..0881698 100644
--- a/tests/Unit/Coordinate/PointTest.php
+++ b/tests/FFMpeg/Unit/Coordinate/PointTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Coordinate;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Coordinate\Point;
+use Tests\FFMpeg\Unit\TestCase;
 
 class PointTest extends TestCase
 {
@@ -16,8 +16,8 @@ class PointTest extends TestCase
 
     public function testDynamicPointGetters()
     {
-        $point = new Point("t*100", "t", true);
-        $this->assertEquals("t*100", $point->getX());
-        $this->assertEquals("t", $point->getY());
+        $point = new Point('t*100', 't', true);
+        $this->assertEquals('t*100', $point->getX());
+        $this->assertEquals('t', $point->getY());
     }
 }
diff --git a/tests/Unit/Coordinate/TimeCodeTest.php b/tests/FFMpeg/Unit/Coordinate/TimeCodeTest.php
similarity index 57%
rename from tests/Unit/Coordinate/TimeCodeTest.php
rename to tests/FFMpeg/Unit/Coordinate/TimeCodeTest.php
index a91b366..60b3577 100644
--- a/tests/Unit/Coordinate/TimeCodeTest.php
+++ b/tests/FFMpeg/Unit/Coordinate/TimeCodeTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Coordinate;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Coordinate\TimeCode;
+use Tests\FFMpeg\Unit\TestCase;
 
 class TimeCodeTest extends TestCase
 {
@@ -18,14 +18,14 @@ class TimeCodeTest extends TestCase
 
     public function provideTimeCodes()
     {
-        return array(
-            array('1:02:04:05:20', '26:04:05.20'),
-            array('1:02:04:05.20', '26:04:05.20'),
-            array('02:04:05:20', '02:04:05.20'),
-            array('02:04:05.20', '02:04:05.20'),
-            array('00:00:05.20', '00:00:05.20'),
-            array('00:00:00.00', '00:00:00.00'),
-        );
+        return [
+            ['1:02:04:05:20', '26:04:05.20'],
+            ['1:02:04:05.20', '26:04:05.20'],
+            ['02:04:05:20', '02:04:05.20'],
+            ['02:04:05.20', '02:04:05.20'],
+            ['00:00:05.20', '00:00:05.20'],
+            ['00:00:00.00', '00:00:00.00'],
+        ];
     }
 
     public function testFromInvalidString()
@@ -45,14 +45,14 @@ class TimeCodeTest extends TestCase
 
     public function provideSeconds()
     {
-        return array(
-            array(0.467,  '00:00:00.47'),
-            array(12.467, '00:00:12.47'),
-            array(59.867, '00:00:59.87'),
-            array(72.467, '00:01:12.47'),
-            array(3599.467, '00:59:59.47'),
-            array(3600.467, '01:00:00.47'),
-            array(86422.467, '24:00:22.47'),
-        );
+        return [
+            [0.467,  '00:00:00.47'],
+            [12.467, '00:00:12.47'],
+            [59.867, '00:00:59.87'],
+            [72.467, '00:01:12.47'],
+            [3599.467, '00:59:59.47'],
+            [3600.467, '01:00:00.47'],
+            [86422.467, '24:00:22.47'],
+        ];
     }
 }
diff --git a/tests/Unit/Driver/FFMpegDriverTest.php b/tests/FFMpeg/Unit/Driver/FFMpegDriverTest.php
similarity index 83%
rename from tests/Unit/Driver/FFMpegDriverTest.php
rename to tests/FFMpeg/Unit/Driver/FFMpegDriverTest.php
index ec4acbd..ee3c8f6 100644
--- a/tests/Unit/Driver/FFMpegDriverTest.php
+++ b/tests/FFMpeg/Unit/Driver/FFMpegDriverTest.php
@@ -4,17 +4,17 @@ namespace Tests\FFMpeg\Unit\Driver;
 
 use Alchemy\BinaryDriver\Configuration;
 use FFMpeg\Driver\FFMpegDriver;
-use Tests\FFMpeg\Unit\TestCase;
 use Symfony\Component\Process\ExecutableFinder;
+use Tests\FFMpeg\Unit\TestCase;
 
 class FFMpegDriverTest extends TestCase
 {
-    public function setUp()
+    public function setUp(): void
     {
         $executableFinder = new ExecutableFinder();
 
         $found = false;
-        foreach (array('avconv', 'ffmpeg') as $name) {
+        foreach (['avconv', 'ffmpeg'] as $name) {
             if (null !== $executableFinder->find($name)) {
                 $found = true;
                 break;
@@ -29,7 +29,7 @@ class FFMpegDriverTest extends TestCase
     public function testCreate()
     {
         $logger = $this->getLoggerMock();
-        $ffmpeg = FFMpegDriver::create($logger, array());
+        $ffmpeg = FFMpegDriver::create($logger, []);
         $this->assertInstanceOf('FFMpeg\Driver\FFMpegDriver', $ffmpeg);
         $this->assertEquals($logger, $ffmpeg->getProcessRunner()->getLogger());
     }
@@ -44,6 +44,6 @@ class FFMpegDriverTest extends TestCase
     public function testCreateFailureThrowsAnException()
     {
         $this->expectException('\FFMpeg\Exception\ExecutableNotFoundException');
-        FFMpegDriver::create($this->getLoggerMock(), array('ffmpeg.binaries' => '/path/to/nowhere'));
+        FFMpegDriver::create($this->getLoggerMock(), ['ffmpeg.binaries' => '/path/to/nowhere']);
     }
 }
diff --git a/tests/Unit/Driver/FFProbeDriverTest.php b/tests/FFMpeg/Unit/Driver/FFProbeDriverTest.php
similarity index 84%
rename from tests/Unit/Driver/FFProbeDriverTest.php
rename to tests/FFMpeg/Unit/Driver/FFProbeDriverTest.php
index d42074e..f476fda 100644
--- a/tests/Unit/Driver/FFProbeDriverTest.php
+++ b/tests/FFMpeg/Unit/Driver/FFProbeDriverTest.php
@@ -4,17 +4,17 @@ namespace Tests\FFMpeg\Unit\Driver;
 
 use Alchemy\BinaryDriver\Configuration;
 use FFMpeg\Driver\FFProbeDriver;
-use Tests\FFMpeg\Unit\TestCase;
 use Symfony\Component\Process\ExecutableFinder;
+use Tests\FFMpeg\Unit\TestCase;
 
 class FFProbeDriverTest extends TestCase
 {
-    public function setUp()
+    public function setUp(): void
     {
         $executableFinder = new ExecutableFinder();
 
         $found = false;
-        foreach (array('avprobe', 'ffprobe') as $name) {
+        foreach (['avprobe', 'ffprobe'] as $name) {
             if (null !== $executableFinder->find($name)) {
                 $found = true;
                 break;
@@ -29,7 +29,7 @@ class FFProbeDriverTest extends TestCase
     public function testCreate()
     {
         $logger = $this->getLoggerMock();
-        $ffprobe = FFProbeDriver::create(array(), $logger);
+        $ffprobe = FFProbeDriver::create([], $logger);
         $this->assertInstanceOf('FFMpeg\Driver\FFProbeDriver', $ffprobe);
         $this->assertEquals($logger, $ffprobe->getProcessRunner()->getLogger());
     }
@@ -44,6 +44,6 @@ class FFProbeDriverTest extends TestCase
     public function testCreateFailureThrowsAnException()
     {
         $this->expectException('\FFMpeg\Exception\ExecutableNotFoundException');
-        FFProbeDriver::create(array('ffprobe.binaries' => '/path/to/nowhere'));
+        FFProbeDriver::create(['ffprobe.binaries' => '/path/to/nowhere']);
     }
 }
diff --git a/tests/Unit/FFMpegTest.php b/tests/FFMpeg/Unit/FFMpegTest.php
similarity index 92%
rename from tests/Unit/FFMpegTest.php
rename to tests/FFMpeg/Unit/FFMpegTest.php
index 08043d6..fb75484 100644
--- a/tests/Unit/FFMpegTest.php
+++ b/tests/FFMpeg/Unit/FFMpegTest.php
@@ -3,8 +3,8 @@
 namespace Tests\FFMpeg\Unit;
 
 use FFMpeg\FFMpeg;
-use FFMpeg\FFProbe\DataMapping\StreamCollection;
 use FFMpeg\FFProbe\DataMapping\Stream;
+use FFMpeg\FFProbe\DataMapping\StreamCollection;
 
 class FFMpegTest extends TestCase
 {
@@ -23,10 +23,10 @@ class FFMpegTest extends TestCase
         $streams = $this->getStreamCollectionMock();
         $streams->expects($this->once())
             ->method('audios')
-            ->will($this->returnValue(new StreamCollection(array(new Stream(array())))));
+            ->will($this->returnValue(new StreamCollection([new Stream([])])));
         $streams->expects($this->once())
             ->method('videos')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $ffprobe = $this->getFFProbeMock();
         $ffprobe->expects($this->once())
@@ -43,7 +43,7 @@ class FFMpegTest extends TestCase
         $streams = $this->getStreamCollectionMock();
         $streams->expects($this->once())
             ->method('videos')
-            ->will($this->returnValue(new StreamCollection(array(new Stream(array())))));
+            ->will($this->returnValue(new StreamCollection([new Stream([])])));
         $streams->expects($this->never())
             ->method('audios');
 
@@ -80,7 +80,7 @@ class FFMpegTest extends TestCase
         $logger = $this->getLoggerMock();
         $ffprobe = $this->getFFProbeMock();
 
-        $ffmpeg = FFMpeg::create(array('timeout' => 42), $logger, $ffprobe);
+        $ffmpeg = FFMpeg::create(['timeout' => 42], $logger, $ffprobe);
         $this->assertInstanceOf('FFMpeg\FFMpeg', $ffmpeg);
 
         $this->assertSame($logger, $ffmpeg->getFFMpegDriver()->getProcessRunner()->getLogger());
diff --git a/tests/Unit/FFProbe/DataMapping/AbstractDataTest.php b/tests/FFMpeg/Unit/FFProbe/DataMapping/AbstractDataTest.php
similarity index 66%
rename from tests/Unit/FFProbe/DataMapping/AbstractDataTest.php
rename to tests/FFMpeg/Unit/FFProbe/DataMapping/AbstractDataTest.php
index a870ae6..ff16314 100644
--- a/tests/Unit/FFProbe/DataMapping/AbstractDataTest.php
+++ b/tests/FFMpeg/Unit/FFProbe/DataMapping/AbstractDataTest.php
@@ -2,14 +2,14 @@
 
 namespace Tests\FFMpeg\Unit\FFProbe\DataMapping;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\FFProbe\DataMapping\AbstractData;
+use Tests\FFMpeg\Unit\TestCase;
 
 class AbstractDataTest extends TestCase
 {
     public function testHas()
     {
-        $imp = new Implementation(array('key1' => 'value1', 'key2' => 'value2'));
+        $imp = new Implementation(['key1' => 'value1', 'key2' => 'value2']);
 
         $this->assertTrue($imp->has('key1'));
         $this->assertTrue($imp->has('key2'));
@@ -19,7 +19,7 @@ class AbstractDataTest extends TestCase
 
     public function testGet()
     {
-        $imp = new Implementation(array('key1' => 'value1', 'key2' => 'value2'));
+        $imp = new Implementation(['key1' => 'value1', 'key2' => 'value2']);
 
         $this->assertEquals('value1', $imp->get('key1'));
         $this->assertEquals('value2', $imp->get('key2'));
@@ -27,20 +27,20 @@ class AbstractDataTest extends TestCase
 
     public function testGetDefault()
     {
-        $imp = new Implementation(array('key1' => 'value1', 'key2' => 'value2'));
+        $imp = new Implementation(['key1' => 'value1', 'key2' => 'value2']);
         $this->assertSame('yololo', $imp->get('key3', 'yololo'));
     }
 
     public function testKeys()
     {
-        $imp = new Implementation(array('key1' => 'value1', 'key2' => 'value2'));
+        $imp = new Implementation(['key1' => 'value1', 'key2' => 'value2']);
 
-        $this->assertEquals(array('key1', 'key2'), $imp->keys());
+        $this->assertEquals(['key1', 'key2'], $imp->keys());
     }
 
     public function testAll()
     {
-        $values = array('key1' => 'value1', 'key2' => 'value2');
+        $values = ['key1' => 'value1', 'key2' => 'value2'];
         $imp = new Implementation($values);
 
         $this->assertEquals($values, $imp->all());
diff --git a/tests/Unit/FFProbe/DataMapping/StreamCollectionTest.php b/tests/FFMpeg/Unit/FFProbe/DataMapping/StreamCollectionTest.php
similarity index 76%
rename from tests/Unit/FFProbe/DataMapping/StreamCollectionTest.php
rename to tests/FFMpeg/Unit/FFProbe/DataMapping/StreamCollectionTest.php
index 64937cc..1f5787f 100644
--- a/tests/Unit/FFProbe/DataMapping/StreamCollectionTest.php
+++ b/tests/FFMpeg/Unit/FFProbe/DataMapping/StreamCollectionTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\FFProbe\DataMapping;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\FFProbe\DataMapping\StreamCollection;
+use Tests\FFMpeg\Unit\TestCase;
 
 class StreamCollectionTest extends TestCase
 {
@@ -12,11 +12,11 @@ class StreamCollectionTest extends TestCase
         $stream = $this->getStreamMock();
 
         $collection = new StreamCollection();
-        $this->assertEquals(array(), $collection->all());
+        $this->assertEquals([], $collection->all());
         $collection->add($stream);
-        $this->assertEquals(array($stream), $collection->all());
+        $this->assertEquals([$stream], $collection->all());
         $collection->add($stream);
-        $this->assertEquals(array($stream, $stream), $collection->all());
+        $this->assertEquals([$stream, $stream], $collection->all());
     }
 
     public function testVideos()
@@ -31,12 +31,12 @@ class StreamCollectionTest extends TestCase
             ->method('isVideo')
             ->will($this->returnValue(true));
 
-        $collection = new StreamCollection(array($audio, $video));
+        $collection = new StreamCollection([$audio, $video]);
         $videos = $collection->videos();
 
         $this->assertInstanceOf('FFMpeg\FFProbe\DataMapping\StreamCollection', $videos);
         $this->assertCount(1, $videos);
-        $this->assertEquals(array($video), $videos->all());
+        $this->assertEquals([$video], $videos->all());
     }
 
     public function testAudios()
@@ -51,19 +51,19 @@ class StreamCollectionTest extends TestCase
             ->method('isAudio')
             ->will($this->returnValue(false));
 
-        $collection = new StreamCollection(array($audio, $video));
+        $collection = new StreamCollection([$audio, $video]);
         $audios = $collection->audios();
 
         $this->assertInstanceOf('FFMpeg\FFProbe\DataMapping\StreamCollection', $audios);
         $this->assertCount(1, $audios);
-        $this->assertEquals(array($audio), $audios->all());
+        $this->assertEquals([$audio], $audios->all());
     }
 
     public function testCount()
     {
         $stream = $this->getStreamMock();
 
-        $collection = new StreamCollection(array($stream));
+        $collection = new StreamCollection([$stream]);
         $this->assertCount(1, $collection);
     }
 
@@ -72,7 +72,7 @@ class StreamCollectionTest extends TestCase
         $audio = $this->getStreamMock();
         $video = $this->getStreamMock();
 
-        $collection = new StreamCollection(array($audio, $video));
+        $collection = new StreamCollection([$audio, $video]);
         $this->assertInstanceOf('\Iterator', $collection->getIterator());
         $this->assertCount(2, $collection->getIterator());
     }
@@ -82,7 +82,7 @@ class StreamCollectionTest extends TestCase
         $stream1 = $this->getStreamMock();
         $stream2 = $this->getStreamMock();
 
-        $coll = new StreamCollection(array($stream1, $stream2));
+        $coll = new StreamCollection([$stream1, $stream2]);
 
         $this->assertSame($stream1, $coll->first());
     }
diff --git a/tests/Unit/FFProbe/DataMapping/StreamTest.php b/tests/FFMpeg/Unit/FFProbe/DataMapping/StreamTest.php
similarity index 64%
rename from tests/Unit/FFProbe/DataMapping/StreamTest.php
rename to tests/FFMpeg/Unit/FFProbe/DataMapping/StreamTest.php
index 0eaee6a..d1cf766 100644
--- a/tests/Unit/FFProbe/DataMapping/StreamTest.php
+++ b/tests/FFMpeg/Unit/FFProbe/DataMapping/StreamTest.php
@@ -3,8 +3,8 @@
 namespace Tests\FFMpeg\Unit\FFProbe\DataMapping;
 
 use FFMpeg\Coordinate\Dimension;
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\FFProbe\DataMapping\Stream;
+use Tests\FFMpeg\Unit\TestCase;
 
 class StreamTest extends TestCase
 {
@@ -19,10 +19,10 @@ class StreamTest extends TestCase
 
     public function provideAudioCases()
     {
-        return array(
-            array(true, array('codec_type' => 'audio')),
-            array(false, array('codec_type' => 'video')),
-        );
+        return [
+            [true, ['codec_type' => 'audio']],
+            [false, ['codec_type' => 'video']],
+        ];
     }
 
     /**
@@ -36,10 +36,10 @@ class StreamTest extends TestCase
 
     public function provideVideoCases()
     {
-        return array(
-            array(true, array('codec_type' => 'video')),
-            array(false, array('codec_type' => 'audio')),
-        );
+        return [
+            [true, ['codec_type' => 'video']],
+            [false, ['codec_type' => 'audio']],
+        ];
     }
 
     public function testGetDimensionsFromAudio()
@@ -48,13 +48,13 @@ class StreamTest extends TestCase
             '\FFMpeg\Exception\LogicException',
             'Dimensions can only be retrieved from video streams.'
         );
-        $stream = new Stream(array('codec_type' => 'audio'));
+        $stream = new Stream(['codec_type' => 'audio']);
         $stream->getDimensions();
     }
 
     public function testGetDimensionsFromVideo()
     {
-        $stream = new Stream(array('codec_type' => 'video', 'width' => 960, 'height' => 720));
+        $stream = new Stream(['codec_type' => 'video', 'width' => 960, 'height' => 720]);
         $this->assertEquals(new Dimension(960, 720), $stream->getDimensions());
     }
 
@@ -67,16 +67,16 @@ class StreamTest extends TestCase
             '\FFMpeg\Exception\RuntimeException',
             'Unable to extract dimensions.'
         );
-        $stream = new Stream(array('codec_type' => 'video', 'width' => 960));
+        $stream = new Stream(['codec_type' => 'video', 'width' => 960]);
         $stream->getDimensions();
     }
 
     public function provideInvalidPropertiesForDimensionsExtraction()
     {
-        return array(
-            array('codec_type' => 'video', 'width' => 960),
-            array('codec_type' => 'video', 'height' => 960),
-        );
+        return [
+            ['codec_type' => 'video', 'width' => 960],
+            ['codec_type' => 'video', 'height' => 960],
+        ];
     }
 
     /**
@@ -84,13 +84,13 @@ class StreamTest extends TestCase
      */
     public function testGetDimensionsFromVideoWithDisplayRatio($data)
     {
-        $stream = new Stream(array(
+        $stream = new Stream([
             'codec_type' => 'video',
             'width' => $data['width'],
-            'height' =>  $data['height'],
-            'sample_aspect_ratio' =>  $data['sar'],
-            'display_aspect_ratio' =>  $data['dar']
-        ));
+            'height' => $data['height'],
+            'sample_aspect_ratio' => $data['sar'],
+            'display_aspect_ratio' => $data['dar'],
+        ]);
         $this->assertEquals(new Dimension($data['result_width'], $data['result_height']), $stream->getDimensions());
     }
 
@@ -99,38 +99,38 @@ class StreamTest extends TestCase
      */
     public function testGetDimensionsFromVideoWithInvalidDisplayRatio($invalidRatio)
     {
-        $stream = new Stream(array('codec_type' => 'video', 'width' => 960, 'height' => 720, 'sample_aspect_ratio' => $invalidRatio, 'display_aspect_ratio' => '16:9'));
+        $stream = new Stream(['codec_type' => 'video', 'width' => 960, 'height' => 720, 'sample_aspect_ratio' => $invalidRatio, 'display_aspect_ratio' => '16:9']);
         $this->assertEquals(new Dimension(960, 720), $stream->getDimensions());
     }
 
     public function provideInvalidRatios()
     {
-        return array(array('0:1'), array('2:1:3'));
+        return [['0:1'], ['2:1:3']];
     }
 
     public function providePropertiesForDimensionsExtraction()
     {
-        return array(
-            array(
-                array('width' => '960', 'height' => '720',
+        return [
+            [
+                ['width' => '960', 'height' => '720',
                 'sar' => '4:3', 'dar' => '16:9',
-                'result_width' => '1280', 'result_height' => '720'),
-            ),
-            array(
-                array('width' => '1920', 'height' => '1080',
+                'result_width' => '1280', 'result_height' => '720', ],
+            ],
+            [
+                ['width' => '1920', 'height' => '1080',
                 'sar' => '1:1', 'dar' => '16:9',
-                'result_width' => '1920', 'result_height' => '1080'),
-            ),
-            array(
-                array('width' => '640', 'height' => '480',
+                'result_width' => '1920', 'result_height' => '1080', ],
+            ],
+            [
+                ['width' => '640', 'height' => '480',
                 'sar' => '75:74', 'dar' => '50:37',
-                'result_width' => '649', 'result_height' => '480'),
-            ),
-            array(
-                array('width' => '720', 'height' => '576',
+                'result_width' => '649', 'result_height' => '480', ],
+            ],
+            [
+                ['width' => '720', 'height' => '576',
                   'sar' => '52:28', 'dar' => '16:9',
-                  'result_width' => '1337', 'result_height' => '752'),
-            ),
-        );
+                  'result_width' => '1337', 'result_height' => '752', ],
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/FFProbe/MapperTest.php b/tests/FFMpeg/Unit/FFProbe/MapperTest.php
similarity index 62%
rename from tests/Unit/FFProbe/MapperTest.php
rename to tests/FFMpeg/Unit/FFProbe/MapperTest.php
index 2ed5360..1abf304 100644
--- a/tests/Unit/FFProbe/MapperTest.php
+++ b/tests/FFMpeg/Unit/FFProbe/MapperTest.php
@@ -2,12 +2,12 @@
 
 namespace Tests\FFMpeg\Unit\FFProbe;
 
-use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\FFProbe\Mapper;
 use FFMpeg\FFProbe;
 use FFMpeg\FFProbe\DataMapping\Format;
 use FFMpeg\FFProbe\DataMapping\Stream;
 use FFMpeg\FFProbe\DataMapping\StreamCollection;
+use FFMpeg\FFProbe\Mapper;
+use Tests\FFMpeg\Unit\TestCase;
 
 class MapperTest extends TestCase
 {
@@ -29,14 +29,14 @@ class MapperTest extends TestCase
 
     public function provideMappings()
     {
-        $format = json_decode(file_get_contents(__DIR__ . '/../../fixtures/ffprobe/show_format.json'), true);
-        $streams = json_decode(file_get_contents(__DIR__ . '/../../fixtures/ffprobe/show_streams.json'), true);
+        $format = json_decode(file_get_contents(__DIR__.'/../../fixtures/ffprobe/show_format.json'), true);
+        $streams = json_decode(file_get_contents(__DIR__.'/../../fixtures/ffprobe/show_streams.json'), true);
 
-        return array(
-            array(FFProbe::TYPE_FORMAT, $format, new Format($format['format'])),
-            array(FFProbe::TYPE_STREAMS, $streams, new StreamCollection(array_map(function ($streamData) {
+        return [
+            [FFProbe::TYPE_FORMAT, $format, new Format($format['format'])],
+            [FFProbe::TYPE_STREAMS, $streams, new StreamCollection(array_map(function ($streamData) {
                 return new Stream($streamData);
-            }, $streams['streams']))),
-        );
+            }, $streams['streams']))],
+        ];
     }
 }
diff --git a/tests/Unit/FFProbe/OptionsTesterTest.php b/tests/FFMpeg/Unit/FFProbe/OptionsTesterTest.php
similarity index 93%
rename from tests/Unit/FFProbe/OptionsTesterTest.php
rename to tests/FFMpeg/Unit/FFProbe/OptionsTesterTest.php
index 619f990..dd693f8 100644
--- a/tests/Unit/FFProbe/OptionsTesterTest.php
+++ b/tests/FFMpeg/Unit/FFProbe/OptionsTesterTest.php
@@ -23,7 +23,7 @@ class OptionsTesterTest extends TestCase
         $ffprobe = $this->getFFProbeDriverMock();
         $ffprobe->expects($this->once())
             ->method('command')
-            ->with(array('-help', '-loglevel', 'quiet'))
+            ->with(['-help', '-loglevel', 'quiet'])
             ->will($this->throwException($executionFailerExceptionMock));
 
         $tester = new OptionsTester($ffprobe, $cache);
@@ -51,7 +51,7 @@ class OptionsTesterTest extends TestCase
         $ffprobe = $this->getFFProbeDriverMock();
         $ffprobe->expects($this->once())
             ->method('command')
-            ->with(array('-help', '-loglevel', 'quiet'))
+            ->with(['-help', '-loglevel', 'quiet'])
             ->will($this->returnValue($data));
 
         $tester = new OptionsTester($ffprobe, $cache);
@@ -62,10 +62,10 @@ class OptionsTesterTest extends TestCase
     {
         $data = file_get_contents(__DIR__ . '/../../fixtures/ffprobe/help.raw');
 
-        return array(
-            array(true, $data, '-print_format'),
-            array(false, $data, '-another_print_format'),
-        );
+        return [
+            [true, $data, '-print_format'],
+            [false, $data, '-another_print_format'],
+        ];
     }
 
     /**
diff --git a/tests/Unit/FFProbe/OutputParserTest.php b/tests/FFMpeg/Unit/FFProbe/OutputParserTest.php
similarity index 58%
rename from tests/Unit/FFProbe/OutputParserTest.php
rename to tests/FFMpeg/Unit/FFProbe/OutputParserTest.php
index 91b7160..71247fb 100644
--- a/tests/Unit/FFProbe/OutputParserTest.php
+++ b/tests/FFMpeg/Unit/FFProbe/OutputParserTest.php
@@ -2,9 +2,9 @@
 
 namespace Tests\FFMpeg\Unit\FFProbe;
 
-use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\FFProbe\OutputParser;
 use FFMpeg\FFProbe;
+use FFMpeg\FFProbe\OutputParser;
+use Tests\FFMpeg\Unit\TestCase;
 
 class OutputParserTest extends TestCase
 {
@@ -26,15 +26,15 @@ class OutputParserTest extends TestCase
 
     public function provideTypeDataAndOutput()
     {
-        $expectedFormat = json_decode(file_get_contents(__DIR__ . '/../../fixtures/ffprobe/show_format.json'), true);
-        $expectedStreams = json_decode(file_get_contents(__DIR__ . '/../../fixtures/ffprobe/show_streams.json'), true);
+        $expectedFormat = json_decode(file_get_contents(__DIR__.'/../../fixtures/ffprobe/show_format.json'), true);
+        $expectedStreams = json_decode(file_get_contents(__DIR__.'/../../fixtures/ffprobe/show_streams.json'), true);
 
-        $rawFormat = file_get_contents(__DIR__ . '/../../fixtures/ffprobe/show_format.raw');
-        $rawStreams = file_get_contents(__DIR__ . '/../../fixtures/ffprobe/show_streams.raw');
+        $rawFormat = file_get_contents(__DIR__.'/../../fixtures/ffprobe/show_format.raw');
+        $rawStreams = file_get_contents(__DIR__.'/../../fixtures/ffprobe/show_streams.raw');
 
-        return array(
-            array(FFProbe::TYPE_FORMAT, $rawFormat, $expectedFormat),
-            array(FFProbe::TYPE_STREAMS, $rawStreams, $expectedStreams),
-        );
+        return [
+            [FFProbe::TYPE_FORMAT, $rawFormat, $expectedFormat],
+            [FFProbe::TYPE_STREAMS, $rawStreams, $expectedStreams],
+        ];
     }
 }
diff --git a/tests/Unit/FFProbeTest.php b/tests/FFMpeg/Unit/FFProbeTest.php
similarity index 78%
rename from tests/Unit/FFProbeTest.php
rename to tests/FFMpeg/Unit/FFProbeTest.php
index 57431d5..08f1f3f 100644
--- a/tests/Unit/FFProbeTest.php
+++ b/tests/FFMpeg/Unit/FFProbeTest.php
@@ -60,12 +60,12 @@ class FFProbeTest extends TestCase
         $stream = $this->getStreamMock();
         $format = $this->getFormatMock();
 
-        return array(
-            array($stream, 'streams', array('-show_streams', '-print_format'), FFProbe::TYPE_STREAMS, array(__FILE__, '-show_streams', '-print_format', 'json'), false),
-            array($format, 'format', array('-show_format', '-print_format'), FFProbe::TYPE_FORMAT, array(__FILE__, '-show_format', '-print_format', 'json'), false),
-            array($stream, 'streams', array('-show_streams'), FFProbe::TYPE_STREAMS, array(__FILE__, '-show_streams'), true),
-            array($format, 'format', array('-show_format'), FFProbe::TYPE_FORMAT, array(__FILE__, '-show_format'), true),
-        );
+        return [
+            [$stream, 'streams', ['-show_streams', '-print_format'], FFProbe::TYPE_STREAMS, [__FILE__, '-show_streams', '-print_format', 'json'], false],
+            [$format, 'format', ['-show_format', '-print_format'], FFProbe::TYPE_FORMAT, [__FILE__, '-show_format', '-print_format', 'json'], false],
+            [$stream, 'streams', ['-show_streams'], FFProbe::TYPE_STREAMS, [__FILE__, '-show_streams'], true],
+            [$format, 'format', ['-show_format'], FFProbe::TYPE_FORMAT, [__FILE__, '-show_format'], true],
+        ];
     }
 
     /**
@@ -74,7 +74,7 @@ class FFProbeTest extends TestCase
     public function testProbeWithoutCache($output, $method, $commands, $type, $caughtCommands, $isRaw)
     {
         $pathfile = __FILE__;
-        $data = array('key' => 'value');
+        $data = ['key' => 'value'];
         $rawData = 'raw data';
 
         $ffprobe = new FFProbe($this->getFFProbeDriverMock(), $this->getCacheMock());
@@ -122,7 +122,7 @@ class FFProbeTest extends TestCase
             ->setFFProbeDriver($driver)
             ->setParser($parser);
 
-        $this->assertEquals($output, call_user_func(array($ffprobe, $method), $pathfile));
+        $this->assertEquals($output, call_user_func([$ffprobe, $method], $pathfile));
     }
 
     public function provideDataForInvalidJson()
@@ -130,10 +130,10 @@ class FFProbeTest extends TestCase
         $stream = $this->getStreamMock();
         $format = $this->getFormatMock();
 
-        return array(
-            array($stream, 'streams', array('-show_streams', '-print_format'), FFProbe::TYPE_STREAMS, array(__FILE__, '-show_streams', '-print_format', 'json')),
-            array($format, 'format', array('-show_format', '-print_format'), FFProbe::TYPE_FORMAT, array(__FILE__, '-show_format', '-print_format', 'json')),
-        );
+        return [
+            [$stream, 'streams', ['-show_streams', '-print_format'], FFProbe::TYPE_STREAMS, [__FILE__, '-show_streams', '-print_format', 'json']],
+            [$format, 'format', ['-show_format', '-print_format'], FFProbe::TYPE_FORMAT, [__FILE__, '-show_format', '-print_format', 'json']],
+        ];
     }
 
     /**
@@ -142,7 +142,7 @@ class FFProbeTest extends TestCase
     public function testProbeWithWrongJson($output, $method, $commands, $type, $caughtCommands)
     {
         $pathfile = __FILE__;
-        $data = array('key' => 'value');
+        $data = ['key' => 'value'];
 
         $ffprobe = new FFProbe($this->getFFProbeDriverMock(), $this->getCacheMock());
 
@@ -155,7 +155,7 @@ class FFProbeTest extends TestCase
         $parser = $this->getFFProbeParserMock();
         $parser->expects($this->once())
             ->method('parse')
-            ->with($this->isType('string', json_encode($data) . 'lala'))
+            ->with($this->isType('string', json_encode($data).'lala'))
             ->will($this->returnValue('good data parsed'));
 
         $tester = $this->getFFProbeOptionsTesterMockWithOptions($commands);
@@ -171,7 +171,7 @@ class FFProbeTest extends TestCase
         $driver = $this->getFFProbeDriverMock();
         $driver->expects($this->exactly(2))
             ->method('command')
-            ->will($this->returnValue(json_encode($data) . 'lala'));
+            ->will($this->returnValue(json_encode($data).'lala'));
 
         $ffprobe->setOptionsTester($tester)
             ->setCache($cache)
@@ -179,7 +179,7 @@ class FFProbeTest extends TestCase
             ->setFFProbeDriver($driver)
             ->setParser($parser);
 
-        $this->assertEquals($output, call_user_func(array($ffprobe, $method), $pathfile));
+        $this->assertEquals($output, call_user_func([$ffprobe, $method], $pathfile));
     }
 
     public function provideProbingDataWithCache()
@@ -187,10 +187,10 @@ class FFProbeTest extends TestCase
         $stream = $this->getStreamMock();
         $format = $this->getFormatMock();
 
-        return array(
-            array($stream, 'streams'),
-            array($format, 'format'),
-        );
+        return [
+            [$stream, 'streams'],
+            [$format, 'format'],
+        ];
     }
 
     /**
@@ -230,15 +230,15 @@ class FFProbeTest extends TestCase
             ->setMapper($mapper)
             ->setFFProbeDriver($driver);
 
-        $this->assertEquals($output, call_user_func(array($ffprobe, $method), $pathfile));
+        $this->assertEquals($output, call_user_func([$ffprobe, $method], $pathfile));
     }
 
     public function provideProbeMethod()
     {
-        return array(
-            array('streams'),
-            array('format'),
-        );
+        return [
+            ['streams'],
+            ['format'],
+        ];
     }
 
     /**
@@ -251,7 +251,7 @@ class FFProbeTest extends TestCase
 
         $ffprobe = new FFProbe($this->getFFProbeDriverMock(), $this->getCacheMock());
         $ffprobe->setOptionsTester($this->getFFProbeOptionsTesterMock());
-        call_user_func(array($ffprobe, $method), $pathfile);
+        call_user_func([$ffprobe, $method], $pathfile);
     }
 
     /**
@@ -262,14 +262,14 @@ class FFProbeTest extends TestCase
         $finder = new ExecutableFinder();
 
         $found = false;
-        foreach (array('avprobe', 'ffprobe') as $name) {
+        foreach (['avprobe', 'ffprobe'] as $name) {
             if (null !== $finder->find($name)) {
                 $found = true;
             }
         }
 
         if (!$found) {
-            $this->markTestSkipped("Unable to find avprobe or ffprobe on system");
+            $this->markTestSkipped('Unable to find avprobe or ffprobe on system');
         }
 
         $ffprobe = FFProbe::create();
@@ -291,11 +291,11 @@ class FFProbeTest extends TestCase
 
     public function provideCreateOptions()
     {
-        return array(
-            array(null, array('key' => 'value'), null),
-            array($this->getLoggerMock(), array('key' => 'value'), null),
-            array(null, new Configuration(), null),
-            array(null, array('key' => 'value'), $this->getCacheMock()),
-        );
+        return [
+            [null, ['key' => 'value'], null],
+            [$this->getLoggerMock(), ['key' => 'value'], null],
+            [null, new Configuration(), null],
+            [null, ['key' => 'value'], $this->getCacheMock()],
+        ];
     }
 }
diff --git a/tests/Unit/Filters/Audio/AudioClipTest.php b/tests/FFMpeg/Unit/Filters/Audio/AudioClipTest.php
similarity index 73%
rename from tests/Unit/Filters/Audio/AudioClipTest.php
rename to tests/FFMpeg/Unit/Filters/Audio/AudioClipTest.php
index 1450e52..a8b5b05 100644
--- a/tests/Unit/Filters/Audio/AudioClipTest.php
+++ b/tests/FFMpeg/Unit/Filters/Audio/AudioClipTest.php
@@ -2,13 +2,14 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Audio;
 
-use FFMpeg\Filters\Audio\AudioFilters;
 use FFMpeg\Coordinate\TimeCode;
+use FFMpeg\Filters\Audio\AudioFilters;
 use Tests\FFMpeg\Unit\TestCase;
 
-class AudioClipTest extends TestCase {
-
-    public function testClipping() {
+class AudioClipTest extends TestCase
+{
+    public function testClipping()
+    {
         $capturedFilter = null;
 
         $audio = $this->getAudioMock();
@@ -17,16 +18,17 @@ class AudioClipTest extends TestCase {
             ->with($this->isInstanceOf('FFMpeg\Filters\Audio\AudioClipFilter'))
             ->will($this->returnCallback(function ($filter) use (&$capturedFilter) {
                 $capturedFilter = $filter;
-        }));
+            }));
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
 
         $filters = new AudioFilters($audio);
 
         $filters->clip(TimeCode::fromSeconds(5));
-        $this->assertEquals(array(0 => '-ss', 1 => '00:00:05.00', 2 => '-acodec', 3 => 'copy'), $capturedFilter->apply($audio, $format));
+        $this->assertEquals([0 => '-ss', 1 => '00:00:05.00', 2 => '-acodec', 3 => 'copy'], $capturedFilter->apply($audio, $format));
     }
 
-    public function testClippingWithDuration() {
+    public function testClippingWithDuration()
+    {
         $capturedFilter = null;
 
         $audio = $this->getAudioMock();
@@ -35,13 +37,12 @@ class AudioClipTest extends TestCase {
             ->with($this->isInstanceOf('FFMpeg\Filters\Audio\AudioClipFilter'))
             ->will($this->returnCallback(function ($filter) use (&$capturedFilter) {
                 $capturedFilter = $filter;
-        }));
+            }));
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
 
         $filters = new AudioFilters($audio);
 
         $filters->clip(TimeCode::fromSeconds(5), TimeCode::fromSeconds(5));
-        $this->assertEquals(array(0 => '-ss', 1 => '00:00:05.00', 2 => '-t', 3 => '00:00:05.00', 4 => '-acodec', 5 => 'copy'), $capturedFilter->apply($audio, $format));
+        $this->assertEquals([0 => '-ss', 1 => '00:00:05.00', 2 => '-t', 3 => '00:00:05.00', 4 => '-acodec', 5 => 'copy'], $capturedFilter->apply($audio, $format));
     }
-
 }
diff --git a/tests/Unit/Filters/Audio/AudioFiltersTest.php b/tests/FFMpeg/Unit/Filters/Audio/AudioFiltersTest.php
similarity index 100%
rename from tests/Unit/Filters/Audio/AudioFiltersTest.php
rename to tests/FFMpeg/Unit/Filters/Audio/AudioFiltersTest.php
diff --git a/tests/Unit/Filters/Audio/AudioMetadataTest.php b/tests/FFMpeg/Unit/Filters/Audio/AudioMetadataTest.php
similarity index 69%
rename from tests/Unit/Filters/Audio/AudioMetadataTest.php
rename to tests/FFMpeg/Unit/Filters/Audio/AudioMetadataTest.php
index dc20879..c9872d7 100644
--- a/tests/Unit/Filters/Audio/AudioMetadataTest.php
+++ b/tests/FFMpeg/Unit/Filters/Audio/AudioMetadataTest.php
@@ -21,8 +21,8 @@ class AudioMetadataTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
 
         $filters = new AudioFilters($audio);
-        $filters->addMetadata(array('title' => "Hello World"));
-        $this->assertEquals(array(0 => "-metadata", 1 => "title=Hello World"), $capturedFilter->apply($audio, $format));
+        $filters->addMetadata(['title' => 'Hello World']);
+        $this->assertEquals([0 => '-metadata', 1 => 'title=Hello World'], $capturedFilter->apply($audio, $format));
     }
 
     public function testAddArtwork()
@@ -39,9 +39,9 @@ class AudioMetadataTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
 
         $filters = new AudioFilters($audio);
-        $filters->addMetadata(array('genre' => 'Some Genre', 'artwork' => "/path/to/file.jpg"));
-        $this->assertEquals(array(0 => "-i", 1 => "/path/to/file.jpg", 2 => "-map", 3 => "0", 4 => "-map", 5 => "1", 6 => "-metadata", 7 => "genre=Some Genre"), $capturedFilter->apply($audio, $format));
-        $this->assertEquals(array(0 => "-i", 1 => "/path/to/file.jpg", 2 => "-map", 3 => "0", 4 => "-map", 5 => "1", 6 => "-metadata", 7 => "genre=Some Genre"), $capturedFilter->apply($audio, $format));
+        $filters->addMetadata(['genre' => 'Some Genre', 'artwork' => '/path/to/file.jpg']);
+        $this->assertEquals([0 => '-i', 1 => '/path/to/file.jpg', 2 => '-map', 3 => '0', 4 => '-map', 5 => '1', 6 => '-metadata', 7 => 'genre=Some Genre'], $capturedFilter->apply($audio, $format));
+        $this->assertEquals([0 => '-i', 1 => '/path/to/file.jpg', 2 => '-map', 3 => '0', 4 => '-map', 5 => '1', 6 => '-metadata', 7 => 'genre=Some Genre'], $capturedFilter->apply($audio, $format));
     }
 
     public function testRemoveMetadata()
@@ -59,6 +59,6 @@ class AudioMetadataTest extends TestCase
 
         $filters = new AudioFilters($audio);
         $filters->addMetadata();
-        $this->assertEquals(array(0 => "-map_metadata", 1 => "-1", 2 => "-vn"), $capturedFilter->apply($audio, $format));
+        $this->assertEquals([0 => '-map_metadata', 1 => '-1', 2 => '-vn'], $capturedFilter->apply($audio, $format));
     }
 }
diff --git a/tests/Unit/Filters/Audio/AudioResamplableFilterTest.php b/tests/FFMpeg/Unit/Filters/Audio/AudioResamplableFilterTest.php
similarity index 86%
rename from tests/Unit/Filters/Audio/AudioResamplableFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Audio/AudioResamplableFilterTest.php
index ffdc3ea..d3b9479 100644
--- a/tests/Unit/Filters/Audio/AudioResamplableFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Audio/AudioResamplableFilterTest.php
@@ -19,6 +19,6 @@ class AudioResamplableFilterTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
 
         $filter = new AudioResamplableFilter(500);
-        $this->assertEquals(array('-ac', 2, '-ar', 500), $filter->apply($audio, $format));
+        $this->assertEquals(['-ac', 2, '-ar', 500], $filter->apply($audio, $format));
     }
 }
diff --git a/tests/Unit/Filters/Audio/CustomFilterTest.php b/tests/FFMpeg/Unit/Filters/Audio/CustomFilterTest.php
similarity index 68%
rename from tests/Unit/Filters/Audio/CustomFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Audio/CustomFilterTest.php
index df80f48..29e1ffa 100644
--- a/tests/Unit/Filters/Audio/CustomFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Audio/CustomFilterTest.php
@@ -3,9 +3,7 @@
 namespace Tests\FFMpeg\Unit\Filters\Audio;
 
 use FFMpeg\Filters\Audio\CustomFilter;
-use FFMpeg\Filters\Audio\FrameRateFilter;
 use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\Coordinate\FrameRate;
 
 class CustomFilterTest extends TestCase
 {
@@ -15,6 +13,6 @@ class CustomFilterTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
 
         $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));
+        $this->assertEquals(['-af', 'whatever i put would end up as a filter'], $filter->apply($audio, $format));
     }
 }
diff --git a/tests/Unit/Filters/FiltersCollectionTest.php b/tests/FFMpeg/Unit/Filters/FiltersCollectionTest.php
similarity index 71%
rename from tests/Unit/Filters/FiltersCollectionTest.php
rename to tests/FFMpeg/Unit/Filters/FiltersCollectionTest.php
index 55c09eb..5e1cc61 100644
--- a/tests/Unit/Filters/FiltersCollectionTest.php
+++ b/tests/FFMpeg/Unit/Filters/FiltersCollectionTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Filters;
 
-use FFMpeg\Filters\FiltersCollection;
 use FFMpeg\Filters\Audio\SimpleFilter;
+use FFMpeg\Filters\FiltersCollection;
 use Tests\FFMpeg\Unit\TestCase;
 
 class FiltersCollectionTest extends TestCase
@@ -39,17 +39,17 @@ class FiltersCollectionTest extends TestCase
     public function testIteratorSort()
     {
         $coll = new FiltersCollection();
-        $coll->add(new SimpleFilter(array('a')));
-        $coll->add(new SimpleFilter(array('1'), 12));
-        $coll->add(new SimpleFilter(array('b')));
-        $coll->add(new SimpleFilter(array('2'), 12));
-        $coll->add(new SimpleFilter(array('c')));
-        $coll->add(new SimpleFilter(array('3'), 10));
-        $coll->add(new SimpleFilter(array('d')));
-        $coll->add(new SimpleFilter(array('4'), -2));
-        $coll->add(new SimpleFilter(array('e')));
+        $coll->add(new SimpleFilter(['a']));
+        $coll->add(new SimpleFilter(['1'], 12));
+        $coll->add(new SimpleFilter(['b']));
+        $coll->add(new SimpleFilter(['2'], 12));
+        $coll->add(new SimpleFilter(['c']));
+        $coll->add(new SimpleFilter(['3'], 10));
+        $coll->add(new SimpleFilter(['d']));
+        $coll->add(new SimpleFilter(['4'], -2));
+        $coll->add(new SimpleFilter(['e']));
 
-        $data = array();
+        $data = [];
         $video = $this->getVideoMock();
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
 
@@ -57,6 +57,6 @@ class FiltersCollectionTest extends TestCase
             $data = array_merge($data, $filter->apply($video, $format));
         }
 
-        $this->assertEquals(array('1', '2', '3', 'a', 'b', 'c', 'd', 'e', '4'), $data);
+        $this->assertEquals(['1', '2', '3', 'a', 'b', 'c', 'd', 'e', '4'], $data);
     }
 }
diff --git a/tests/Unit/Filters/Frame/CustomFrameFilterTest.php b/tests/FFMpeg/Unit/Filters/Frame/CustomFrameFilterTest.php
similarity index 76%
rename from tests/Unit/Filters/Frame/CustomFrameFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Frame/CustomFrameFilterTest.php
index 98869af..a9bc102 100644
--- a/tests/Unit/Filters/Frame/CustomFrameFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Frame/CustomFrameFilterTest.php
@@ -12,6 +12,6 @@ class CustomFrameFilterTest extends TestCase
         $frame = $this->getFrameMock();
 
         $filter = new CustomFrameFilter('whatever i put would end up as a filter');
-        $this->assertEquals(array('-vf', 'whatever i put would end up as a filter'), $filter->apply($frame));
+        $this->assertEquals(['-vf', 'whatever i put would end up as a filter'], $filter->apply($frame));
     }
 }
diff --git a/tests/Unit/Filters/Frame/DisplayRatioFixerFilterTest.php b/tests/FFMpeg/Unit/Filters/Frame/DisplayRatioFixerFilterTest.php
similarity index 75%
rename from tests/Unit/Filters/Frame/DisplayRatioFixerFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Frame/DisplayRatioFixerFilterTest.php
index 5b40b32..0ce38a6 100644
--- a/tests/Unit/Filters/Frame/DisplayRatioFixerFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Frame/DisplayRatioFixerFilterTest.php
@@ -2,19 +2,19 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Frame;
 
-use Tests\FFMpeg\Unit\TestCase;
+use FFMpeg\Coordinate\TimeCode;
+use FFMpeg\FFProbe\DataMapping\Stream;
+use FFMpeg\FFProbe\DataMapping\StreamCollection;
 use FFMpeg\Filters\Frame\DisplayRatioFixerFilter;
 use FFMpeg\Media\Frame;
-use FFMpeg\Coordinate\TimeCode;
-use FFMpeg\FFProbe\DataMapping\StreamCollection;
-use FFMpeg\FFProbe\DataMapping\Stream;
+use Tests\FFMpeg\Unit\TestCase;
 
 class DisplayRatioFixerFilterTest extends TestCase
 {
     public function testApply()
     {
-        $stream = new Stream(array('codec_type' => 'video', 'width' => 960, 'height' => 720));
-        $streams = new StreamCollection(array($stream));
+        $stream = new Stream(['codec_type' => 'video', 'width' => 960, 'height' => 720]);
+        $streams = new StreamCollection([$stream]);
 
         $video = $this->getVideoMock(__FILE__);
         $video->expects($this->once())
@@ -23,6 +23,6 @@ class DisplayRatioFixerFilterTest extends TestCase
 
         $frame = new Frame($video, $this->getFFMpegDriverMock(), $this->getFFProbeMock(), new TimeCode(0, 0, 0, 0));
         $filter = new DisplayRatioFixerFilter();
-        $this->assertEquals(array('-s', '960x720'), $filter->apply($frame));
+        $this->assertEquals(['-s', '960x720'], $filter->apply($frame));
     }
 }
diff --git a/tests/Unit/Filters/Frame/FrameFiltersTest.php b/tests/FFMpeg/Unit/Filters/Frame/FrameFiltersTest.php
similarity index 100%
rename from tests/Unit/Filters/Frame/FrameFiltersTest.php
rename to tests/FFMpeg/Unit/Filters/Frame/FrameFiltersTest.php
index 891ba4f..7658d43 100644
--- a/tests/Unit/Filters/Frame/FrameFiltersTest.php
+++ b/tests/FFMpeg/Unit/Filters/Frame/FrameFiltersTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Frame;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Filters\Frame\FrameFilters;
+use Tests\FFMpeg\Unit\TestCase;
 
 class FrameFiltersTest extends TestCase
 {
diff --git a/tests/Unit/Filters/Video/CropFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/CropFilterTest.php
similarity index 75%
rename from tests/Unit/Filters/Video/CropFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Video/CropFilterTest.php
index 54afadb..a217dbb 100644
--- a/tests/Unit/Filters/Video/CropFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Video/CropFilterTest.php
@@ -11,11 +11,10 @@ use Tests\FFMpeg\Unit\TestCase;
 
 class CropFilterTest extends TestCase
 {
-
     public function testCommandParamsAreCorrectAndStreamIsUpdated()
     {
-        $stream = new Stream(array('width' => 320, 'height' => 240, 'codec_type' => 'video'));
-        $streams = new StreamCollection(array($stream));
+        $stream = new Stream(['width' => 320, 'height' => 240, 'codec_type' => 'video']);
+        $streams = new StreamCollection([$stream]);
 
         $video = $this->getVideoMock();
         $video->expects($this->once())
@@ -27,14 +26,13 @@ class CropFilterTest extends TestCase
         $dimension = new Dimension(200, 150);
         $point = new Point(25, 35);
         $filter = new CropFilter($point, $dimension);
-        $expected = array(
+        $expected = [
             '-filter:v',
-            'crop=' . $dimension->getWidth() . ":" . $dimension->getHeight() . ":" . $point->getX() . ":" . $point->getY()
-        );
+            'crop='.$dimension->getWidth().':'.$dimension->getHeight().':'.$point->getX().':'.$point->getY(),
+        ];
         $this->assertEquals($expected, $filter->apply($video, $format));
 
         $this->assertEquals(200, $stream->get('width'));
         $this->assertEquals(150, $stream->get('height'));
     }
-
 }
diff --git a/tests/Unit/Filters/Video/CustomFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/CustomFilterTest.php
similarity index 68%
rename from tests/Unit/Filters/Video/CustomFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Video/CustomFilterTest.php
index 403c29d..2f46960 100644
--- a/tests/Unit/Filters/Video/CustomFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Video/CustomFilterTest.php
@@ -3,9 +3,7 @@
 namespace Tests\FFMpeg\Unit\Filters\Video;
 
 use FFMpeg\Filters\Video\CustomFilter;
-use FFMpeg\Filters\Video\FrameRateFilter;
 use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\Coordinate\FrameRate;
 
 class CustomFilterTest extends TestCase
 {
@@ -15,6 +13,6 @@ class CustomFilterTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
 
         $filter = new CustomFilter('whatever i put would end up as a filter');
-        $this->assertEquals(array('-vf', 'whatever i put would end up as a filter'), $filter->apply($video, $format));
+        $this->assertEquals(['-vf', 'whatever i put would end up as a filter'], $filter->apply($video, $format));
     }
 }
diff --git a/tests/FFMpeg/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php
new file mode 100644
index 0000000..13545a0
--- /dev/null
+++ b/tests/FFMpeg/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php
@@ -0,0 +1,73 @@
+getVideoMock();
+        $pathfile = '/path/to/file'.mt_rand();
+
+        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
+        $format->expects($this->any())
+            ->method('getModulus')
+            ->will($this->returnValue($modulus));
+
+        $streams = new StreamCollection([
+            new Stream([
+                'codec_type' => 'video',
+                'duration' => $duration,
+            ]),
+        ]);
+
+        $video->expects($this->once())
+            ->method('getStreams')
+            ->will($this->returnValue($streams));
+
+        $filter = new ExtractMultipleFramesFilter($frameRate, $destinationFolder);
+        $filter->setFrameFileType($frameFileType);
+        $this->assertEquals($expected, $filter->apply($video, $format));
+    }
+
+    public function provideFrameRates()
+    {
+        return [
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_SEC, 'jpg', '/', 100, 2, ['-vf', 'fps=1/1', '/frame-%03d.jpg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_2SEC, 'jpg', '/', 100, 2, ['-vf', 'fps=1/2', '/frame-%02d.jpg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_5SEC, 'jpg', '/', 100, 2, ['-vf', 'fps=1/5', '/frame-%02d.jpg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, 'jpg', '/', 100, 2, ['-vf', 'fps=1/10', '/frame-%02d.jpg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_30SEC, 'jpg', '/', 100, 2, ['-vf', 'fps=1/30', '/frame-%02d.jpg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_60SEC, 'jpg', '/', 100, 2, ['-vf', 'fps=1/60', '/frame-%02d.jpg']],
+
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_SEC, 'jpeg', '/', 100, 2, ['-vf', 'fps=1/1', '/frame-%03d.jpeg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_2SEC, 'jpeg', '/', 100, 2, ['-vf', 'fps=1/2', '/frame-%02d.jpeg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_5SEC, 'jpeg', '/', 100, 2, ['-vf', 'fps=1/5', '/frame-%02d.jpeg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, 'jpeg', '/', 100, 2, ['-vf', 'fps=1/10', '/frame-%02d.jpeg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_30SEC, 'jpeg', '/', 100, 2, ['-vf', 'fps=1/30', '/frame-%02d.jpeg']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_60SEC, 'jpeg', '/', 100, 2, ['-vf', 'fps=1/60', '/frame-%02d.jpeg']],
+
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_SEC, 'png', '/', 100, 2, ['-vf', 'fps=1/1', '/frame-%03d.png']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_2SEC, 'png', '/', 100, 2, ['-vf', 'fps=1/2', '/frame-%02d.png']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_5SEC, 'png', '/', 100, 2, ['-vf', 'fps=1/5', '/frame-%02d.png']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, 'png', '/', 100, 2, ['-vf', 'fps=1/10', '/frame-%02d.png']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_30SEC, 'png', '/', 100, 2, ['-vf', 'fps=1/30', '/frame-%02d.png']],
+            [ExtractMultipleFramesFilter::FRAMERATE_EVERY_60SEC, 'png', '/', 100, 2, ['-vf', 'fps=1/60', '/frame-%02d.png']],
+        ];
+    }
+
+    public function testInvalidFrameFileType()
+    {
+        $this->expectException('\FFMpeg\Exception\InvalidArgumentException');
+        $filter = new ExtractMultipleFramesFilter('1/1', '/');
+        $filter->setFrameFileType('webm');
+    }
+}
diff --git a/tests/Unit/Filters/Video/FrameRateFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/FrameRateFilterTest.php
similarity index 91%
rename from tests/Unit/Filters/Video/FrameRateFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Video/FrameRateFilterTest.php
index 8e3693b..e5700d8 100644
--- a/tests/Unit/Filters/Video/FrameRateFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Video/FrameRateFilterTest.php
@@ -2,9 +2,9 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Video;
 
+use FFMpeg\Coordinate\FrameRate;
 use FFMpeg\Filters\Video\FrameRateFilter;
 use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\Coordinate\FrameRate;
 
 class FrameRateFilterTest extends TestCase
 {
@@ -19,7 +19,7 @@ class FrameRateFilterTest extends TestCase
             ->method('supportBFrames')
             ->will($this->returnValue(true));
 
-        $expected = array('-r', 54, '-b_strategy', '1', '-bf', '3', '-g', 42);
+        $expected = ['-r', 54, '-b_strategy', '1', '-bf', '3', '-g', 42];
 
         $filter = new FrameRateFilter($framerate, $gop);
         $this->assertEquals($expected, $filter->apply($video, $format));
@@ -36,7 +36,7 @@ class FrameRateFilterTest extends TestCase
             ->method('supportBFrames')
             ->will($this->returnValue(false));
 
-        $expected = array('-r', 54);
+        $expected = ['-r', 54];
 
         $filter = new FrameRateFilter($framerate, $gop);
         $this->assertEquals($expected, $filter->apply($video, $format));
diff --git a/tests/FFMpeg/Unit/Filters/Video/PadFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/PadFilterTest.php
new file mode 100644
index 0000000..703b909
--- /dev/null
+++ b/tests/FFMpeg/Unit/Filters/Video/PadFilterTest.php
@@ -0,0 +1,44 @@
+getVideoMock();
+        $pathfile = '/path/to/file'.mt_rand();
+
+        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
+
+        $streams = new StreamCollection([
+            new Stream([
+                'codec_type' => 'video',
+                'width' => $width,
+                'height' => $height,
+            ]),
+        ]);
+
+        $filter = new PadFilter($dimension);
+        $this->assertEquals($expected, $filter->apply($video, $format));
+    }
+
+    public function provideDimensions()
+    {
+        return [
+            [new Dimension(1000, 800), 640, 480, ['-vf', 'scale=iw*min(1000/iw\,800/ih):ih*min(1000/iw\,800/ih),pad=1000:800:(1000-iw)/2:(800-ih)/2']],
+            [new Dimension(300, 600), 640, 480, ['-vf', 'scale=iw*min(300/iw\,600/ih):ih*min(300/iw\,600/ih),pad=300:600:(300-iw)/2:(600-ih)/2']],
+            [new Dimension(100, 900), 640, 480, ['-vf', 'scale=iw*min(100/iw\,900/ih):ih*min(100/iw\,900/ih),pad=100:900:(100-iw)/2:(900-ih)/2']],
+            [new Dimension(1200, 200), 640, 480, ['-vf', 'scale=iw*min(1200/iw\,200/ih):ih*min(1200/iw\,200/ih),pad=1200:200:(1200-iw)/2:(200-ih)/2']],
+        ];
+    }
+}
diff --git a/tests/FFMpeg/Unit/Filters/Video/ResizeFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/ResizeFilterTest.php
new file mode 100644
index 0000000..158e73d
--- /dev/null
+++ b/tests/FFMpeg/Unit/Filters/Video/ResizeFilterTest.php
@@ -0,0 +1,75 @@
+getVideoMock();
+        $pathfile = '/path/to/file'.mt_rand();
+
+        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
+        $format->expects($this->any())
+            ->method('getModulus')
+            ->will($this->returnValue($modulus));
+
+        $streams = new StreamCollection([
+            new Stream([
+                'codec_type' => 'video',
+                'width' => $width,
+                'height' => $height,
+            ]),
+        ]);
+
+        $video->expects($this->once())
+            ->method('getStreams')
+            ->will($this->returnValue($streams));
+
+        $filter = new ResizeFilter($dimension, $mode, $forceStandards);
+        $this->assertEquals($expected, $filter->apply($video, $format));
+    }
+
+    public function provideDimensions()
+    {
+        return [
+            [new Dimension(320, 240), ResizeFilter::RESIZEMODE_FIT, 640, 480, 2, ['-vf', '[in]scale=320:240 [out]']],
+            [new Dimension(320, 240), ResizeFilter::RESIZEMODE_INSET, 640, 480, 2, ['-vf', '[in]scale=320:240 [out]']],
+            [new Dimension(320, 240), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 640, 480, 2, ['-vf', '[in]scale=320:240 [out]']],
+            [new Dimension(320, 240), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 640, 480, 2, ['-vf', '[in]scale=320:240 [out]']],
+
+            [new Dimension(640, 480), ResizeFilter::RESIZEMODE_FIT, 320, 240, 2, ['-vf', '[in]scale=640:480 [out]']],
+            [new Dimension(640, 480), ResizeFilter::RESIZEMODE_INSET, 320, 240, 2, ['-vf', '[in]scale=640:480 [out]']],
+            [new Dimension(640, 480), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 320, 240, 2, ['-vf', '[in]scale=640:480 [out]']],
+            [new Dimension(640, 480), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 320, 240, 2, ['-vf', '[in]scale=640:480 [out]']],
+
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_FIT, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_INSET, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_FIT, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_INSET, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+            [new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 1280, 720, 2, ['-vf', '[in]scale=640:360 [out]']],
+
+            // test non standard dimension
+            [new Dimension(700, 150), ResizeFilter::RESIZEMODE_INSET, 123, 456, 2, ['-vf', '[in]scale=62:150 [out]'], true],
+            [new Dimension(700, 150), ResizeFilter::RESIZEMODE_INSET, 123, 456, 2, ['-vf', '[in]scale=40:150 [out]'], false],
+
+            [new Dimension(320, 320), ResizeFilter::RESIZEMODE_FIT, 640, 480, 2, ['-vf', '[in]scale=320:320 [out]']],
+            [new Dimension(320, 320), ResizeFilter::RESIZEMODE_INSET, 640, 480, 2, ['-vf', '[in]scale=320:240 [out]']],
+            [new Dimension(320, 320), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 640, 480, 2, ['-vf', '[in]scale=320:240 [out]']],
+            [new Dimension(320, 320), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 640, 480, 2, ['-vf', '[in]scale=426:320 [out]']],
+        ];
+    }
+}
diff --git a/tests/Unit/Filters/Video/RotateFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/RotateFilterTest.php
similarity index 72%
rename from tests/Unit/Filters/Video/RotateFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Video/RotateFilterTest.php
index 7aa956a..ff94b90 100644
--- a/tests/Unit/Filters/Video/RotateFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Video/RotateFilterTest.php
@@ -14,8 +14,8 @@ class RotateFilterTest extends TestCase
      */
     public function testApplyWithSizeTransformation($value)
     {
-        $stream = new Stream(array('width' => 320, 'height' => 240, 'codec_type' => 'video'));
-        $streams = new StreamCollection(array($stream));
+        $stream = new Stream(['width' => 320, 'height' => 240, 'codec_type' => 'video']);
+        $streams = new StreamCollection([$stream]);
 
         $video = $this->getVideoMock();
         $video->expects($this->once())
@@ -25,7 +25,7 @@ class RotateFilterTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
 
         $filter = new RotateFilter($value);
-        $this->assertEquals(array('-vf', $value, '-metadata:s:v:0', 'rotate=0'), $filter->apply($video, $format));
+        $this->assertEquals(['-vf', $value, '-metadata:s:v:0', 'rotate=0'], $filter->apply($video, $format));
 
         $this->assertEquals(240, $stream->get('width'));
         $this->assertEquals(320, $stream->get('height'));
@@ -33,10 +33,10 @@ class RotateFilterTest extends TestCase
 
     public function provide90degresTranspositions()
     {
-        return array(
-            array(RotateFilter::ROTATE_90),
-            array(RotateFilter::ROTATE_270),
-        );
+        return [
+            [RotateFilter::ROTATE_90],
+            [RotateFilter::ROTATE_270],
+        ];
     }
 
     /**
@@ -51,14 +51,14 @@ class RotateFilterTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
 
         $filter = new RotateFilter($value);
-        $this->assertEquals(array('-vf', $value, '-metadata:s:v:0', 'rotate=0'), $filter->apply($video, $format));
+        $this->assertEquals(['-vf', $value, '-metadata:s:v:0', 'rotate=0'], $filter->apply($video, $format));
     }
 
     public function provideDegresWithoutTranspositions()
     {
-        return array(
-            array(RotateFilter::ROTATE_180),
-        );
+        return [
+            [RotateFilter::ROTATE_180],
+        ];
     }
 
     public function testApplyInvalidAngle()
diff --git a/tests/Unit/Filters/Video/SynchronizeFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/SynchronizeFilterTest.php
similarity index 76%
rename from tests/Unit/Filters/Video/SynchronizeFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Video/SynchronizeFilterTest.php
index 7986d76..262314c 100644
--- a/tests/Unit/Filters/Video/SynchronizeFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Video/SynchronizeFilterTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Video;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Filters\Video\SynchronizeFilter;
+use Tests\FFMpeg\Unit\TestCase;
 
 class SynchronizeFilterTest extends TestCase
 {
@@ -13,6 +13,6 @@ class SynchronizeFilterTest extends TestCase
         $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
 
         $filter = new SynchronizeFilter();
-        $this->assertEquals(array('-async', '1', '-metadata:s:v:0', 'start_time=0'), $filter->apply($video, $format));
+        $this->assertEquals(['-async', '1', '-metadata:s:v:0', 'start_time=0'], $filter->apply($video, $format));
     }
 }
diff --git a/tests/Unit/Filters/Video/VideoFiltersTest.php b/tests/FFMpeg/Unit/Filters/Video/VideoFiltersTest.php
similarity index 88%
rename from tests/Unit/Filters/Video/VideoFiltersTest.php
rename to tests/FFMpeg/Unit/Filters/Video/VideoFiltersTest.php
index 7ca3fe9..c7114c5 100644
--- a/tests/Unit/Filters/Video/VideoFiltersTest.php
+++ b/tests/FFMpeg/Unit/Filters/Video/VideoFiltersTest.php
@@ -2,9 +2,9 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Video;
 
-use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\Filters\Video\VideoFilters;
 use FFMpeg\Filters\Video\ResizeFilter;
+use FFMpeg\Filters\Video\VideoFilters;
+use Tests\FFMpeg\Unit\TestCase;
 
 class VideoFiltersTest extends TestCase
 {
@@ -35,12 +35,12 @@ class VideoFiltersTest extends TestCase
 
     public function provideResizeOptions()
     {
-        return array(
-            array(ResizeFilter::RESIZEMODE_FIT, true),
-            array(ResizeFilter::RESIZEMODE_SCALE_WIDTH, true),
-            array(ResizeFilter::RESIZEMODE_SCALE_HEIGHT, false),
-            array(ResizeFilter::RESIZEMODE_INSET, false),
-        );
+        return [
+            [ResizeFilter::RESIZEMODE_FIT, true],
+            [ResizeFilter::RESIZEMODE_SCALE_WIDTH, true],
+            [ResizeFilter::RESIZEMODE_SCALE_HEIGHT, false],
+            [ResizeFilter::RESIZEMODE_INSET, false],
+        ];
     }
 
     public function testResample()
diff --git a/tests/FFMpeg/Unit/Filters/Video/WatermarkFilterTest.php b/tests/FFMpeg/Unit/Filters/Video/WatermarkFilterTest.php
new file mode 100644
index 0000000..8bed38c
--- /dev/null
+++ b/tests/FFMpeg/Unit/Filters/Video/WatermarkFilterTest.php
@@ -0,0 +1,62 @@
+ 320, 'height' => 240, 'codec_type' => 'video']);
+        $streams = new StreamCollection([$stream]);
+
+        $video = $this->getVideoMock();
+
+        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
+
+        $filter = new WatermarkFilter(__DIR__.'/../../../files/watermark.png');
+        $this->assertEquals(['-vf', 'movie='.__DIR__.'/../../../files/watermark.png [watermark]; [in][watermark] overlay=0:0 [out]'], $filter->apply($video, $format));
+
+        // check size of video is unchanged
+        $this->assertEquals(320, $stream->get('width'));
+        $this->assertEquals(240, $stream->get('height'));
+    }
+
+    public function testDifferentCoordinaates()
+    {
+        $video = $this->getVideoMock();
+        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
+
+        // test position absolute
+        $filter = new WatermarkFilter(__DIR__.'/../../../files/watermark.png', [
+            'position' => 'absolute',
+            'x' => 10, 'y' => 5,
+        ]);
+        $this->assertEquals(['-vf', 'movie='.__DIR__.'/../../../files/watermark.png [watermark]; [in][watermark] overlay=10:5 [out]'], $filter->apply($video, $format));
+
+        // test position relative
+        $filter = new WatermarkFilter(__DIR__.'/../../../files/watermark.png', [
+            'position' => 'relative',
+            'bottom' => 10, 'left' => 5,
+        ]);
+        $this->assertEquals(['-vf', 'movie='.__DIR__.'/../../../files/watermark.png [watermark]; [in][watermark] overlay=5:main_h - 10 - overlay_h [out]'], $filter->apply($video, $format));
+
+        // test position relative
+        $filter = new WatermarkFilter(__DIR__.'/../../../files/watermark.png', [
+            'position' => 'relative',
+            'bottom' => 5, 'right' => 4,
+        ]);
+        $this->assertEquals(['-vf', 'movie='.__DIR__.'/../../../files/watermark.png [watermark]; [in][watermark] overlay=main_w - 4 - overlay_w:main_h - 5 - overlay_h [out]'], $filter->apply($video, $format));
+
+        // test position relative
+        $filter = new WatermarkFilter(__DIR__.'/../../../files/watermark.png', [
+            'position' => 'relative',
+            'left' => 5, 'top' => 11,
+        ]);
+        $this->assertEquals(['-vf', 'movie='.__DIR__.'/../../../files/watermark.png [watermark]; [in][watermark] overlay=5:11 [out]'], $filter->apply($video, $format));
+    }
+}
diff --git a/tests/Unit/Filters/Waveform/WaveformDownmixFilterTest.php b/tests/FFMpeg/Unit/Filters/Waveform/WaveformDownmixFilterTest.php
similarity index 65%
rename from tests/Unit/Filters/Waveform/WaveformDownmixFilterTest.php
rename to tests/FFMpeg/Unit/Filters/Waveform/WaveformDownmixFilterTest.php
index 527d001..9cadc4d 100644
--- a/tests/Unit/Filters/Waveform/WaveformDownmixFilterTest.php
+++ b/tests/FFMpeg/Unit/Filters/Waveform/WaveformDownmixFilterTest.php
@@ -2,19 +2,18 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Waveform;
 
-use Tests\FFMpeg\Unit\TestCase;
+use FFMpeg\FFProbe\DataMapping\Stream;
+use FFMpeg\FFProbe\DataMapping\StreamCollection;
 use FFMpeg\Filters\Waveform\WaveformDownmixFilter;
 use FFMpeg\Media\Waveform;
-use FFMpeg\Coordinate\TimeCode;
-use FFMpeg\FFProbe\DataMapping\StreamCollection;
-use FFMpeg\FFProbe\DataMapping\Stream;
+use Tests\FFMpeg\Unit\TestCase;
 
 class WaveformDownmixFilterTest extends TestCase
 {
     public function testApply()
     {
-        $stream = new Stream(array('codec_type' => 'audio', 'width' => 960, 'height' => 720));
-        $streams = new StreamCollection(array($stream));
+        $stream = new Stream(['codec_type' => 'audio', 'width' => 960, 'height' => 720]);
+        $streams = new StreamCollection([$stream]);
 
         $audio = $this->getAudioMock(__FILE__);
         $audio->expects($this->once())
@@ -22,7 +21,7 @@ class WaveformDownmixFilterTest extends TestCase
                 ->will($this->returnValue($streams));
 
         $waveform = new Waveform($audio, $this->getFFMpegDriverMock(), $this->getFFProbeMock(), 640, 120);
-        $filter = new WaveformDownmixFilter(TRUE);
-        $this->assertEquals(array('"aformat=channel_layouts=mono"'), $filter->apply($waveform));
+        $filter = new WaveformDownmixFilter(true);
+        $this->assertEquals(['"aformat=channel_layouts=mono"'], $filter->apply($waveform));
     }
 }
diff --git a/tests/Unit/Filters/Waveform/WaveformFiltersTest.php b/tests/FFMpeg/Unit/Filters/Waveform/WaveformFiltersTest.php
similarity index 100%
rename from tests/Unit/Filters/Waveform/WaveformFiltersTest.php
rename to tests/FFMpeg/Unit/Filters/Waveform/WaveformFiltersTest.php
index b35c7a3..e7cf6fb 100644
--- a/tests/Unit/Filters/Waveform/WaveformFiltersTest.php
+++ b/tests/FFMpeg/Unit/Filters/Waveform/WaveformFiltersTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Filters\Waveform;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Filters\Waveform\WaveformFilters;
+use Tests\FFMpeg\Unit\TestCase;
 
 class WaveformFiltersTest extends TestCase
 {
diff --git a/tests/Unit/Format/Audio/AacTest.php b/tests/FFMpeg/Unit/Format/Audio/AacTest.php
similarity index 100%
rename from tests/Unit/Format/Audio/AacTest.php
rename to tests/FFMpeg/Unit/Format/Audio/AacTest.php
diff --git a/tests/Unit/Format/Audio/AudioTestCase.php b/tests/FFMpeg/Unit/Format/Audio/AudioTestCase.php
similarity index 100%
rename from tests/Unit/Format/Audio/AudioTestCase.php
rename to tests/FFMpeg/Unit/Format/Audio/AudioTestCase.php
index 79d02e3..009119c 100644
--- a/tests/Unit/Format/Audio/AudioTestCase.php
+++ b/tests/FFMpeg/Unit/Format/Audio/AudioTestCase.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Format\Audio;
 
-use Tests\FFMpeg\Unit\TestCase;
 use FFMpeg\Format\Audio\DefaultAudio;
+use Tests\FFMpeg\Unit\TestCase;
 
 abstract class AudioTestCase extends TestCase
 {
diff --git a/tests/Unit/Format/Audio/FlacTest.php b/tests/FFMpeg/Unit/Format/Audio/FlacTest.php
similarity index 100%
rename from tests/Unit/Format/Audio/FlacTest.php
rename to tests/FFMpeg/Unit/Format/Audio/FlacTest.php
diff --git a/tests/Unit/Format/Audio/Mp3Test.php b/tests/FFMpeg/Unit/Format/Audio/Mp3Test.php
similarity index 100%
rename from tests/Unit/Format/Audio/Mp3Test.php
rename to tests/FFMpeg/Unit/Format/Audio/Mp3Test.php
diff --git a/tests/Unit/Format/Audio/VorbisTest.php b/tests/FFMpeg/Unit/Format/Audio/VorbisTest.php
similarity index 100%
rename from tests/Unit/Format/Audio/VorbisTest.php
rename to tests/FFMpeg/Unit/Format/Audio/VorbisTest.php
diff --git a/tests/Unit/Format/Audio/WavTest.php b/tests/FFMpeg/Unit/Format/Audio/WavTest.php
similarity index 100%
rename from tests/Unit/Format/Audio/WavTest.php
rename to tests/FFMpeg/Unit/Format/Audio/WavTest.php
diff --git a/tests/Unit/Format/ProgressListener/AudioProgressListenerTest.php b/tests/FFMpeg/Unit/Format/ProgressListener/AudioProgressListenerTest.php
similarity index 81%
rename from tests/Unit/Format/ProgressListener/AudioProgressListenerTest.php
rename to tests/FFMpeg/Unit/Format/ProgressListener/AudioProgressListenerTest.php
index 07fd662..ee421f0 100644
--- a/tests/Unit/Format/ProgressListener/AudioProgressListenerTest.php
+++ b/tests/FFMpeg/Unit/Format/ProgressListener/AudioProgressListenerTest.php
@@ -2,29 +2,37 @@
 
 namespace Tests\FFMpeg\Unit\Format\ProgressListener;
 
-use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\Format\ProgressListener\AudioProgressListener;
 use FFMpeg\FFProbe\DataMapping\Format;
+use FFMpeg\Format\ProgressListener\AudioProgressListener;
+use Tests\FFMpeg\Unit\TestCase;
 
 class AudioProgressListenerTest extends TestCase
 {
     /**
      * @dataProvider provideData
      */
-    public function testHandle($size, $duration,
-        $data, $expectedPercent, $expectedRemaining, $expectedRate,
-        $data2, $expectedPercent2, $expectedRemaining2, $expectedRate2,
-        $currentPass, $totalPass
-    )
-    {
+    public function testHandle(
+        $size,
+        $duration,
+        $data,
+        $expectedPercent,
+        $expectedRemaining,
+        $expectedRate,
+        $data2,
+        $expectedPercent2,
+        $expectedRemaining2,
+        $expectedRate2,
+        $currentPass,
+        $totalPass
+    ) {
         $ffprobe = $this->getFFProbeMock();
         $ffprobe->expects($this->once())
             ->method('format')
             ->with(__FILE__)
-            ->will($this->returnValue(new Format(array(
-                'size'     => $size,
+            ->will($this->returnValue(new Format([
+                'size' => $size,
                 'duration' => $duration,
-            ))));
+            ])));
 
         $listener = new AudioProgressListener($ffprobe, __FILE__, $currentPass, $totalPass);
         $phpunit = $this;
@@ -40,7 +48,7 @@ class AudioProgressListenerTest extends TestCase
                 $phpunit->assertLessThan($expectedRate2 + 3, $rate);
                 $phpunit->assertGreaterThan($expectedRate2 - 3, $rate);
             }
-            $n++;
+            ++$n;
         });
         // first one does not trigger progress event
         $listener->handle('any-type'.mt_rand(), $data);
@@ -53,8 +61,8 @@ class AudioProgressListenerTest extends TestCase
 
     public function provideData()
     {
-        return array(
-            array(
+        return [
+            [
                 2894412,
                 180.900750,
                 'size=     712kB time=00:00:45.50 bitrate= 128.1kbits/s',
@@ -66,9 +74,9 @@ class AudioProgressListenerTest extends TestCase
                 2,
                 563,
                 1,
-                1
-            ),
-            array(
+                1,
+            ],
+            [
                 2894412,
                 180.900750,
                 'size=     712kB time=00:00:45.50 bitrate= 128.1kbits/s',
@@ -80,8 +88,8 @@ class AudioProgressListenerTest extends TestCase
                 2,
                 563,
                 1,
-                2
-            )
-        );
+                2,
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/Format/ProgressListener/VideoProgressListenerTest.php b/tests/FFMpeg/Unit/Format/ProgressListener/VideoProgressListenerTest.php
similarity index 83%
rename from tests/Unit/Format/ProgressListener/VideoProgressListenerTest.php
rename to tests/FFMpeg/Unit/Format/ProgressListener/VideoProgressListenerTest.php
index 9e0bd28..eed94e6 100644
--- a/tests/Unit/Format/ProgressListener/VideoProgressListenerTest.php
+++ b/tests/FFMpeg/Unit/Format/ProgressListener/VideoProgressListenerTest.php
@@ -2,29 +2,38 @@
 
 namespace Tests\FFMpeg\Unit\Format\ProgressListener;
 
-use Tests\FFMpeg\Unit\TestCase;
-use FFMpeg\Format\ProgressListener\VideoProgressListener;
 use FFMpeg\FFProbe\DataMapping\Format;
+use FFMpeg\Format\ProgressListener\VideoProgressListener;
+use Tests\FFMpeg\Unit\TestCase;
 
 class VideoProgressListenerTest extends TestCase
 {
     /**
      * @dataProvider provideData
      */
-    public function testHandle($size, $duration, $newVideoDuration,
-        $data, $expectedPercent, $expectedRemaining, $expectedRate,
-        $data2, $expectedPercent2, $expectedRemaining2, $expectedRate2,
-        $currentPass, $totalPass
-    )
-    {
+    public function testHandle(
+        $size,
+        $duration,
+        $newVideoDuration,
+        $data,
+        $expectedPercent,
+        $expectedRemaining,
+        $expectedRate,
+        $data2,
+        $expectedPercent2,
+        $expectedRemaining2,
+        $expectedRate2,
+        $currentPass,
+        $totalPass
+    ) {
         $ffprobe = $this->getFFProbeMock();
         $ffprobe->expects($this->once())
             ->method('format')
             ->with(__FILE__)
-            ->will($this->returnValue(new Format(array(
-                'size'     => $size,
+            ->will($this->returnValue(new Format([
+                'size' => $size,
                 'duration' => $duration,
-            ))));
+            ])));
 
         $listener = new VideoProgressListener($ffprobe, __FILE__, $currentPass, $totalPass, $newVideoDuration);
         $phpunit = $this;
@@ -40,7 +49,7 @@ class VideoProgressListenerTest extends TestCase
                 $phpunit->assertLessThan($expectedRate2 + 10, $rate);
                 $phpunit->assertGreaterThan($expectedRate2 - 10, $rate);
             }
-            $n++;
+            ++$n;
         });
         // first one does not trigger progress event
         $listener->handle('any-type'.mt_rand(), $data);
@@ -53,8 +62,8 @@ class VideoProgressListenerTest extends TestCase
 
     public function provideData()
     {
-        return array(
-            array(
+        return [
+            [
                 147073958,
                 281.147533,
                 281.147533,
@@ -67,9 +76,9 @@ class VideoProgressListenerTest extends TestCase
                 32,
                 3868,
                 1,
-                1
-            ),
-            array(
+                1,
+            ],
+            [
                 147073958,
                 281.147533,
                 281.147533,
@@ -82,9 +91,9 @@ class VideoProgressListenerTest extends TestCase
                 32,
                 3868,
                 1,
-                2
-            ),
-            array(
+                2,
+            ],
+            [
                 147073958,
                 281.147533,
                 35,
@@ -97,8 +106,8 @@ class VideoProgressListenerTest extends TestCase
                 0,
                 3868,
                 2,
-                2
-            )
-        );
+                2,
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/Format/Video/InitialParametersTest.php b/tests/FFMpeg/Unit/Format/Video/InitialParametersTest.php
similarity index 61%
rename from tests/Unit/Format/Video/InitialParametersTest.php
rename to tests/FFMpeg/Unit/Format/Video/InitialParametersTest.php
index 932be07..9152870 100644
--- a/tests/Unit/Format/Video/InitialParametersTest.php
+++ b/tests/FFMpeg/Unit/Format/Video/InitialParametersTest.php
@@ -10,7 +10,7 @@ class InitialParametersTest extends TestCase
     public function testApplyInitialParameters()
     {
         $format = new X264();
-        $format->setInitialParameters(array('-acodec', 'libopus'));
-        $this->assertEquals(array('-acodec', 'libopus'), $format->getInitialParameters());
+        $format->setInitialParameters(['-acodec', 'libopus']);
+        $this->assertEquals(['-acodec', 'libopus'], $format->getInitialParameters());
     }
 }
diff --git a/tests/Unit/Format/Video/OggTest.php b/tests/FFMpeg/Unit/Format/Video/OggTest.php
similarity index 100%
rename from tests/Unit/Format/Video/OggTest.php
rename to tests/FFMpeg/Unit/Format/Video/OggTest.php
diff --git a/tests/Unit/Format/Video/VideoTestCase.php b/tests/FFMpeg/Unit/Format/Video/VideoTestCase.php
similarity index 100%
rename from tests/Unit/Format/Video/VideoTestCase.php
rename to tests/FFMpeg/Unit/Format/Video/VideoTestCase.php
diff --git a/tests/Unit/Format/Video/WMV3Test.php b/tests/FFMpeg/Unit/Format/Video/WMV3Test.php
similarity index 100%
rename from tests/Unit/Format/Video/WMV3Test.php
rename to tests/FFMpeg/Unit/Format/Video/WMV3Test.php
diff --git a/tests/Unit/Format/Video/WMVTest.php b/tests/FFMpeg/Unit/Format/Video/WMVTest.php
similarity index 100%
rename from tests/Unit/Format/Video/WMVTest.php
rename to tests/FFMpeg/Unit/Format/Video/WMVTest.php
diff --git a/tests/Unit/Format/Video/WebMTest.php b/tests/FFMpeg/Unit/Format/Video/WebMTest.php
similarity index 100%
rename from tests/Unit/Format/Video/WebMTest.php
rename to tests/FFMpeg/Unit/Format/Video/WebMTest.php
diff --git a/tests/Unit/Format/Video/X264Test.php b/tests/FFMpeg/Unit/Format/Video/X264Test.php
similarity index 100%
rename from tests/Unit/Format/Video/X264Test.php
rename to tests/FFMpeg/Unit/Format/Video/X264Test.php
diff --git a/tests/Unit/Media/AbstractMediaTestCase.php b/tests/FFMpeg/Unit/Media/AbstractMediaTestCase.php
similarity index 100%
rename from tests/Unit/Media/AbstractMediaTestCase.php
rename to tests/FFMpeg/Unit/Media/AbstractMediaTestCase.php
diff --git a/tests/Unit/Media/AbstractStreamableTestCase.php b/tests/FFMpeg/Unit/Media/AbstractStreamableTestCase.php
similarity index 100%
rename from tests/Unit/Media/AbstractStreamableTestCase.php
rename to tests/FFMpeg/Unit/Media/AbstractStreamableTestCase.php
diff --git a/tests/Unit/Media/AdvancedMediaTest.php b/tests/FFMpeg/Unit/Media/AdvancedMediaTest.php
similarity index 67%
rename from tests/Unit/Media/AdvancedMediaTest.php
rename to tests/FFMpeg/Unit/Media/AdvancedMediaTest.php
index 3310e12..cc8cbb6 100644
--- a/tests/Unit/Media/AdvancedMediaTest.php
+++ b/tests/FFMpeg/Unit/Media/AdvancedMediaTest.php
@@ -11,8 +11,8 @@ class AdvancedMediaTest extends AbstractMediaTestCase
         $driver = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
-        $advancedMedia = new AdvancedMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
-        $this->assertSame(array(__FILE__, __FILE__), $advancedMedia->getInputs());
+        $advancedMedia = new AdvancedMedia([__FILE__, __FILE__], $driver, $ffprobe);
+        $this->assertSame([__FILE__, __FILE__], $advancedMedia->getInputs());
     }
 
     public function testGetInputsCount()
@@ -20,7 +20,7 @@ class AdvancedMediaTest extends AbstractMediaTestCase
         $driver = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
-        $advancedMedia = new AdvancedMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
+        $advancedMedia = new AdvancedMedia([__FILE__, __FILE__], $driver, $ffprobe);
         $this->assertEquals(2, $advancedMedia->getInputsCount());
     }
 
@@ -29,7 +29,7 @@ class AdvancedMediaTest extends AbstractMediaTestCase
         $driver = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
-        $advancedMedia = new AdvancedMedia(array(__FILE__, __FILE__), $driver, $ffprobe);
+        $advancedMedia = new AdvancedMedia([__FILE__, __FILE__], $driver, $ffprobe);
         $this->assertInstanceOf('FFMpeg\Filters\AdvancedMedia\ComplexFilters', $advancedMedia->filters());
     }
 }
diff --git a/tests/Unit/Media/AudioProg.php b/tests/FFMpeg/Unit/Media/AudioProg.php
similarity index 100%
rename from tests/Unit/Media/AudioProg.php
rename to tests/FFMpeg/Unit/Media/AudioProg.php
index 3765a1b..54342da 100644
--- a/tests/Unit/Media/AudioProg.php
+++ b/tests/FFMpeg/Unit/Media/AudioProg.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Media;
 
-use FFMpeg\Format\ProgressableInterface;
 use FFMpeg\Format\AudioInterface;
+use FFMpeg\Format\ProgressableInterface;
 
 abstract class AudioProg implements ProgressableInterface, AudioInterface
 {
diff --git a/tests/Unit/Media/AudioTest.php b/tests/FFMpeg/Unit/Media/AudioTest.php
similarity index 79%
rename from tests/Unit/Media/AudioTest.php
rename to tests/FFMpeg/Unit/Media/AudioTest.php
index ed4dadf..8b5f6b7 100644
--- a/tests/Unit/Media/AudioTest.php
+++ b/tests/FFMpeg/Unit/Media/AudioTest.php
@@ -4,8 +4,6 @@ namespace Tests\FFMpeg\Unit\Media;
 
 use FFMpeg\Exception\RuntimeException;
 use FFMpeg\Media\Audio;
-use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
-use FFMpeg\Format\AudioInterface;
 
 class AudioTest extends AbstractStreamableTestCase
 {
@@ -69,7 +67,7 @@ class AudioTest extends AbstractStreamableTestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $configuration = $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock();
 
@@ -95,7 +93,7 @@ class AudioTest extends AbstractStreamableTestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $configuration = $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock();
 
@@ -109,9 +107,9 @@ class AudioTest extends AbstractStreamableTestCase
         $filter->expects($this->once())
             ->method('apply')
             ->with($audio, $format)
-            ->will($this->returnValue(array('extra-filter-command')));
+            ->will($this->returnValue(['extra-filter-command']));
 
-        $capturedCommands = array();
+        $capturedCommands = [];
 
         $driver->expects($this->once())
             ->method('command')
@@ -184,7 +182,7 @@ class AudioTest extends AbstractStreamableTestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $format->expects($this->any())
             ->method('getAudioKiloBitrate')
             ->will($this->returnValue(663));
@@ -195,7 +193,7 @@ class AudioTest extends AbstractStreamableTestCase
         $audioFormat = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
         $audioFormat->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $audioFormat->expects($this->any())
             ->method('getAudioKiloBitrate')
             ->will($this->returnValue(664));
@@ -209,7 +207,7 @@ class AudioTest extends AbstractStreamableTestCase
         $formatExtra = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
         $formatExtra->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array('extra', 'param')));
+            ->will($this->returnValue(['extra', 'param']));
         $formatExtra->expects($this->any())
             ->method('getAudioKiloBitrate')
             ->will($this->returnValue(665));
@@ -217,13 +215,13 @@ class AudioTest extends AbstractStreamableTestCase
             ->method('getAudioChannels')
             ->will($this->returnValue(5));
 
-        $listeners = array($this->getMockBuilder('Alchemy\BinaryDriver\Listeners\ListenerInterface')->getMock());
+        $listeners = [$this->getMockBuilder('Alchemy\BinaryDriver\Listeners\ListenerInterface')->getMock()];
 
         $progressableFormat = $this->getMockBuilder('Tests\FFMpeg\Unit\Media\AudioProg')
             ->disableOriginalConstructor()->getMock();
         $progressableFormat->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $progressableFormat->expects($this->any())
             ->method('createProgressListener')
             ->will($this->returnValue($listeners));
@@ -234,56 +232,56 @@ class AudioTest extends AbstractStreamableTestCase
             ->method('getAudioChannels')
             ->will($this->returnValue(5));
 
-        return array(
-            array(false, array(
-                    '-y', '-i', __FILE__,
-                    '-b:a', '663k',
-                    '-ac', '5',
-                    '/target/file',
-                ), null, $format),
-            array(false, array(
-                    '-y', '-i', __FILE__,
-                    '-acodec', 'patati-patata-audio',
-                    '-b:a', '664k',
-                    '-ac', '5',
-                    '/target/file',
-                ), null, $audioFormat),
-            array(false, array(
-                    '-y', '-i', __FILE__,
-                    'extra', 'param',
-                    '-b:a', '665k',
-                    '-ac', '5',
-                    '/target/file',
-                ), null, $formatExtra),
-            array(true, array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24,
-                    '-b:a', '663k',
-                    '-ac', '5',
-                    '/target/file',
-                ), null, $format),
-            array(true, array(
-                    '-y', '-i', __FILE__,
-                    'extra', 'param',
-                    '-threads', 24,
-                    '-b:a', '665k',
-                    '-ac', '5',
-                    '/target/file',
-                ), null, $formatExtra),
-            array(false, array(
-                    '-y', '-i', __FILE__,
-                    '-b:a', '666k',
-                    '-ac', '5',
-                    '/target/file',
-                ), $listeners, $progressableFormat),
-            array(true, array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24,
-                    '-b:a', '666k',
-                    '-ac', '5',
-                    '/target/file',
-                ), $listeners, $progressableFormat),
-        );
+        return [
+            [false, [
+                '-y', '-i', __FILE__,
+                '-b:a', '663k',
+                '-ac', '5',
+                '/target/file',
+            ], null, $format],
+            [false, [
+                '-y', '-i', __FILE__,
+                '-acodec', 'patati-patata-audio',
+                '-b:a', '664k',
+                '-ac', '5',
+                '/target/file',
+            ], null, $audioFormat],
+            [false, [
+                '-y', '-i', __FILE__,
+                'extra', 'param',
+                '-b:a', '665k',
+                '-ac', '5',
+                '/target/file',
+            ], null, $formatExtra],
+            [true, [
+                '-y', '-i', __FILE__,
+                '-threads', 24,
+                '-b:a', '663k',
+                '-ac', '5',
+                '/target/file',
+            ], null, $format],
+            [true, [
+                '-y', '-i', __FILE__,
+                'extra', 'param',
+                '-threads', 24,
+                '-b:a', '665k',
+                '-ac', '5',
+                '/target/file',
+            ], null, $formatExtra],
+            [false, [
+                '-y', '-i', __FILE__,
+                '-b:a', '666k',
+                '-ac', '5',
+                '/target/file',
+            ], $listeners, $progressableFormat],
+            [true, [
+                '-y', '-i', __FILE__,
+                '-threads', 24,
+                '-b:a', '666k',
+                '-ac', '5',
+                '/target/file',
+            ], $listeners, $progressableFormat],
+        ];
     }
 
     public function testSaveShouldNotStoreCodecFiltersInTheMedia()
@@ -307,7 +305,7 @@ class AudioTest extends AbstractStreamableTestCase
             ->with($this->equalTo('ffmpeg.threads'))
             ->will($this->returnValue(24));
 
-        $capturedCommands = array();
+        $capturedCommands = [];
 
         $driver->expects($this->exactly(2))
             ->method('command')
@@ -321,15 +319,15 @@ class AudioTest extends AbstractStreamableTestCase
         $format = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array('param')));
+            ->will($this->returnValue(['param']));
 
         $audio = new Audio(__FILE__, $driver, $ffprobe);
         $audio->save($format, $outputPathfile);
         $audio->save($format, $outputPathfile);
 
-        $expected = array(
+        $expected = [
             '-y', '-i', __FILE__, 'param', '-threads', 24, '/target/file',
-        );
+        ];
 
         foreach ($capturedCommands as $capturedCommand) {
             $this->assertEquals($expected, $capturedCommand);
diff --git a/tests/Unit/Media/ClipTest.php b/tests/FFMpeg/Unit/Media/ClipTest.php
similarity index 81%
rename from tests/Unit/Media/ClipTest.php
rename to tests/FFMpeg/Unit/Media/ClipTest.php
index ab1b656..8f0212e 100644
--- a/tests/Unit/Media/ClipTest.php
+++ b/tests/FFMpeg/Unit/Media/ClipTest.php
@@ -1,11 +1,11 @@
 will($this->returnValue(1));
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $clip = new Clip($this->getVideoMock(__FILE__), $driver, $ffprobe, $start, $duration);
         $fc = $clip->getFinalCommand($format, $outputPathfile);
@@ -52,16 +52,16 @@ class ClipTest extends AbstractMediaTestCase
 
     public function provideBuildOptions()
     {
-        return array(
-            array('SS01', null, array(
-                    '-y', '-ss', 'SS01',
-                    '-i', __FILE__)
-            ),
-            array('SS02', 'D02', array(
-                    '-y', '-ss', 'SS02',
-                    '-i', __FILE__,
-                    '-t', 'D02')
-            )
-        );
+        return [
+            ['SS01', null, [
+                '-y', '-ss', 'SS01',
+                '-i', __FILE__, ],
+            ],
+            ['SS02', 'D02', [
+                '-y', '-ss', 'SS02',
+                '-i', __FILE__,
+                '-t', 'D02', ],
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/Media/ConcatTest.php b/tests/FFMpeg/Unit/Media/ConcatTest.php
similarity index 74%
rename from tests/Unit/Media/ConcatTest.php
rename to tests/FFMpeg/Unit/Media/ConcatTest.php
index 28de35e..33b6d96 100644
--- a/tests/Unit/Media/ConcatTest.php
+++ b/tests/FFMpeg/Unit/Media/ConcatTest.php
@@ -3,7 +3,7 @@
 namespace Tests\FFMpeg\Unit\Media;
 
 use FFMpeg\Media\Concat;
-use Neutron\TemporaryFilesystem\Manager as FsManager;
+use Spatie\TemporaryDirectory\TemporaryDirectory;
 
 class ConcatTest extends AbstractMediaTestCase
 {
@@ -12,8 +12,8 @@ class ConcatTest extends AbstractMediaTestCase
         $driver = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
-        $concat = new Concat(array(__FILE__, __FILE__), $driver, $ffprobe);
-        $this->assertSame(array(__FILE__, __FILE__), $concat->getSources());
+        $concat = new Concat([__FILE__, __FILE__], $driver, $ffprobe);
+        $this->assertSame([__FILE__, __FILE__], $concat->getSources());
     }
 
     public function testFiltersReturnFilters()
@@ -21,7 +21,7 @@ class ConcatTest extends AbstractMediaTestCase
         $driver = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
-        $concat = new Concat(array(__FILE__, __FILE__), $driver, $ffprobe);
+        $concat = new Concat([__FILE__, __FILE__], $driver, $ffprobe);
         $this->assertInstanceOf('FFMpeg\Filters\Concat\ConcatFilters', $concat->filters());
     }
 
@@ -40,7 +40,7 @@ class ConcatTest extends AbstractMediaTestCase
             ->method('add')
             ->with($filter);
 
-        $concat = new Concat(array(__FILE__, __FILE__), $driver, $ffprobe);
+        $concat = new Concat([__FILE__, __FILE__], $driver, $ffprobe);
         $concat->setFiltersCollection($filters);
         $concat->addFilter($filter);
     }
@@ -60,9 +60,10 @@ class ConcatTest extends AbstractMediaTestCase
         $driver->expects($this->exactly(1))
             ->method('command')
             ->with($this->isType('array'), false, $this->anything())
-            ->will($this->returnCallback(function ($commands, $errors, $listeners) {}));
+            ->will($this->returnCallback(function ($commands, $errors, $listeners) {
+            }));
 
-        $concat = new Concat(array(__FILE__, 'concat-2.mp4'), $driver, $ffprobe);
+        $concat = new Concat([__FILE__, 'concat-2.mp4'], $driver, $ffprobe);
         $concat->saveFromSameCodecs($pathfile, $streamCopy);
 
         $this->assertEquals('-f', $commands[0]);
@@ -70,7 +71,7 @@ class ConcatTest extends AbstractMediaTestCase
         $this->assertEquals('-safe', $commands[2]);
         $this->assertEquals('0', $commands[3]);
         $this->assertEquals('-i', $commands[4]);
-        if(isset($commands[6]) && (strcmp($commands[6], "-c") == 0)) {
+        if (isset($commands[6]) && (0 == strcmp($commands[6], '-c'))) {
             $this->assertEquals('-c', $commands[6]);
             $this->assertEquals('copy', $commands[7]);
         }
@@ -78,28 +79,29 @@ class ConcatTest extends AbstractMediaTestCase
 
     public function provideSaveFromSameCodecsOptions()
     {
-        $fs = FsManager::create();
-        $tmpFile = $fs->createTemporaryFile('ffmpeg-concat');
+        $fs = (new TemporaryDirectory())->create();
+        $tmpFile = $fs->path('ffmpeg-concat');
+        touch($tmpFile);
 
-        return array(
-            array(
-                TRUE,
-                array(
+        return [
+            [
+                true,
+                [
                     '-f', 'concat',
                     '-safe', '0',
                     '-i', $tmpFile,
-                    '-c', 'copy'
-                ),
-            ),
-            array(
-                FALSE,
-                array(
+                    '-c', 'copy',
+                ],
+            ],
+            [
+                false,
+                [
                     '-f', 'concat',
                     '-safe', '0',
-                    '-i', $tmpFile
-                )
-            ),
-        );
+                    '-i', $tmpFile,
+                ],
+            ],
+        ];
     }
 
     /**
@@ -125,23 +127,23 @@ class ConcatTest extends AbstractMediaTestCase
             ->method('command')
             ->with($commands);
 
-        $concat = new Concat(array(__FILE__, 'concat-2.mp4'), $driver, $ffprobe);
+        $concat = new Concat([__FILE__, 'concat-2.mp4'], $driver, $ffprobe);
         $this->assertSame($concat, $concat->saveFromDifferentCodecs($format, $pathfile));
     }
 
     public function provideSaveFromDifferentCodecsOptions()
     {
-        return array(
-            array(
-                array(
+        return [
+            [
+                [
                     '-i', __FILE__,
                     '-i', 'concat-2.mp4',
                     '-filter_complex',
                     '[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]',
                     '-map', '[v]',
-                    '-map', '[a]'
-                ),
-            ),
-        );
+                    '-map', '[a]',
+                ],
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/Media/FrameTest.php b/tests/FFMpeg/Unit/Media/FrameTest.php
similarity index 80%
rename from tests/Unit/Media/FrameTest.php
rename to tests/FFMpeg/Unit/Media/FrameTest.php
index 88c0bef..74515d4 100644
--- a/tests/Unit/Media/FrameTest.php
+++ b/tests/FFMpeg/Unit/Media/FrameTest.php
@@ -69,11 +69,10 @@ class FrameTest extends AbstractMediaTestCase
             ->method('command')
             ->with($commands);
 
-        if(!$base64) {
+        if (!$base64) {
             $frame = new Frame($this->getVideoMock(__FILE__), $driver, $ffprobe, $timecode);
             $this->assertSame($frame, $frame->save($pathfile, $accurate, $base64));
-        }
-        else {
+        } else {
             $frame = new Frame($this->getVideoMock(__FILE__), $driver, $ffprobe, $timecode);
             $frame->save($pathfile, $accurate, $base64);
         }
@@ -81,29 +80,29 @@ class FrameTest extends AbstractMediaTestCase
 
     public function provideSaveOptions()
     {
-        return array(
-            array(false, false, array(
+        return [
+            [false, false, [
                 '-y', '-ss', 'timecode',
                 '-i', __FILE__,
                 '-vframes', '1',
-                '-f', 'image2')
-            ),
-            array(true, false, array(
+                '-f', 'image2', ],
+            ],
+            [true, false, [
                 '-y', '-i', __FILE__,
                 '-vframes', '1', '-ss', 'timecode',
-                '-f', 'image2')
-            ),
-            array(false, true, array(
-                    '-y', '-ss', 'timecode',
-                    '-i', __FILE__,
-                    '-vframes', '1',
-                    '-f', 'image2pipe', '-')
-            ),
-            array(true, true, array(
-                    '-y', '-i', __FILE__,
-                    '-vframes', '1', '-ss', 'timecode',
-                    '-f', 'image2pipe', '-')
-            )
-        );
+                '-f', 'image2', ],
+            ],
+            [false, true, [
+                '-y', '-ss', 'timecode',
+                '-i', __FILE__,
+                '-vframes', '1',
+                '-f', 'image2pipe', '-', ],
+            ],
+            [true, true, [
+                '-y', '-i', __FILE__,
+                '-vframes', '1', '-ss', 'timecode',
+                '-f', 'image2pipe', '-', ],
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/Media/GifTest.php b/tests/FFMpeg/Unit/Media/GifTest.php
similarity index 92%
rename from tests/Unit/Media/GifTest.php
rename to tests/FFMpeg/Unit/Media/GifTest.php
index a2dfe91..1d91d44 100644
--- a/tests/Unit/Media/GifTest.php
+++ b/tests/FFMpeg/Unit/Media/GifTest.php
@@ -2,8 +2,8 @@
 
 namespace Tests\FFMpeg\Unit\Media;
 
-use FFMpeg\Media\Gif;
 use FFMpeg\Coordinate\Dimension;
+use FFMpeg\Media\Gif;
 
 class GifTest extends AbstractMediaTestCase
 {
@@ -89,28 +89,28 @@ class GifTest extends AbstractMediaTestCase
 
     public function provideSaveOptions()
     {
-        return array(
-            array(
+        return [
+            [
                 new Dimension(320, 240), 3,
-                array(
+                [
                     '-ss', 'timecode',
                     '-t', '3',
                     '-i', __FILE__,
                     '-vf',
                     'scale=320:-1', '-gifflags',
-                    '+transdiff', '-y'
-                ),
-            ),
-            array(
+                    '+transdiff', '-y',
+                ],
+            ],
+            [
                 new Dimension(320, 240), null,
-                array(
+                [
                     '-ss', 'timecode',
                     '-i', __FILE__,
                     '-vf',
                     'scale=320:-1', '-gifflags',
-                    '+transdiff', '-y'
-                )
-            ),
-        );
+                    '+transdiff', '-y',
+                ],
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/Media/Prog.php b/tests/FFMpeg/Unit/Media/Prog.php
similarity index 100%
rename from tests/Unit/Media/Prog.php
rename to tests/FFMpeg/Unit/Media/Prog.php
diff --git a/tests/Unit/Media/VideoTest.php b/tests/FFMpeg/Unit/Media/VideoTest.php
similarity index 66%
rename from tests/Unit/Media/VideoTest.php
rename to tests/FFMpeg/Unit/Media/VideoTest.php
index 39c405d..3c00b00 100644
--- a/tests/Unit/Media/VideoTest.php
+++ b/tests/FFMpeg/Unit/Media/VideoTest.php
@@ -3,16 +3,14 @@
 namespace Tests\FFMpeg\Unit\Media;
 
 use FFMpeg\Exception\RuntimeException;
-use FFMpeg\Media\Video;
 use FFMpeg\Format\Video\X264;
-use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
-use FFMpeg\Format\VideoInterface;
+use FFMpeg\Media\Video;
 
 class VideoTest extends AbstractStreamableTestCase
 {
     public function testFiltersReturnsVideoFilters()
     {
-        $driver = $this->getFFMpegDriverMock();
+        $driver  = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
         $video = new Video(__FILE__, $driver, $ffprobe);
@@ -21,7 +19,7 @@ class VideoTest extends AbstractStreamableTestCase
 
     public function testAddFiltersAddsAFilter()
     {
-        $driver = $this->getFFMpegDriverMock();
+        $driver  = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
         $filters = $this->getMockBuilder('FFMpeg\Filters\FiltersCollection')
@@ -42,7 +40,7 @@ class VideoTest extends AbstractStreamableTestCase
 
     public function testAddAudioFilterAddsAFilter()
     {
-        $driver = $this->getFFMpegDriverMock();
+        $driver  = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
         $filters = $this->getMockBuilder('FFMpeg\Filters\FiltersCollection')
@@ -63,7 +61,7 @@ class VideoTest extends AbstractStreamableTestCase
 
     public function testFrameShouldReturnAFrame()
     {
-        $driver = $this->getFFMpegDriverMock();
+        $driver  = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
         $at = $this->getTimeCodeMock();
@@ -78,16 +76,16 @@ class VideoTest extends AbstractStreamableTestCase
 
     public function testSaveWithFailure()
     {
-        $driver = $this->getFFMpegDriverMock();
-        $ffprobe = $this->getFFProbeMock();
+        $driver         = $this->getFFMpegDriverMock();
+        $ffprobe        = $this->getFFProbeMock();
         $outputPathfile = '/target/file';
-        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
+        $format         = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $format->expects($this->any())
             ->method('getPasses')
             ->will($this->returnValue(1));
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $configuration = $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock();
 
@@ -107,13 +105,13 @@ class VideoTest extends AbstractStreamableTestCase
 
     public function testSaveAppliesFilters()
     {
-        $driver = $this->getFFMpegDriverMock();
-        $ffprobe = $this->getFFProbeMock();
+        $driver         = $this->getFFMpegDriverMock();
+        $ffprobe        = $this->getFFProbeMock();
         $outputPathfile = '/target/file';
-        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
+        $format         = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $format->expects($this->any())
             ->method('getPasses')
             ->will($this->returnValue(2));
@@ -130,9 +128,9 @@ class VideoTest extends AbstractStreamableTestCase
         $filter->expects($this->once())
             ->method('apply')
             ->with($video, $format)
-            ->will($this->returnValue(array('extra-filter-command')));
+            ->will($this->returnValue(['extra-filter-command']));
 
-        $capturedCommands = array();
+        $capturedCommands = [];
 
         $driver->expects($this->exactly(2))
             ->method('command')
@@ -157,7 +155,7 @@ class VideoTest extends AbstractStreamableTestCase
      */
     public function testSaveShouldSave($threads, $expectedCommands, $expectedListeners, $format)
     {
-        $driver = $this->getFFMpegDriverMock();
+        $driver  = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
         $configuration = $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock();
@@ -181,7 +179,7 @@ class VideoTest extends AbstractStreamableTestCase
                 ->method('get');
         }
 
-        $capturedCommands = array();
+        $capturedCommands  = [];
         $capturedListeners = null;
 
         $driver->expects($this->exactly(count($expectedCommands)))
@@ -238,7 +236,7 @@ class VideoTest extends AbstractStreamableTestCase
         $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $format->expects($this->any())
             ->method('getKiloBitrate')
             ->will($this->returnValue(663));
@@ -253,12 +251,12 @@ class VideoTest extends AbstractStreamableTestCase
             ->will($this->returnValue(2));
         $format->expects($this->any())
             ->method('getAdditionalParameters')
-            ->will($this->returnValue(array('foo', 'bar')));
+            ->will($this->returnValue(['foo', 'bar']));
 
         $format2 = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $format2->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $format2->expects($this->any())
             ->method('getKiloBitrate')
             ->will($this->returnValue(663));
@@ -273,12 +271,12 @@ class VideoTest extends AbstractStreamableTestCase
             ->will($this->returnValue(2));
         $format2->expects($this->any())
             ->method('getAdditionalParameters')
-            ->will($this->returnValue(array('foo', 'bar')));
+            ->will($this->returnValue(['foo', 'bar']));
 
         $audioFormat = $this->getMockBuilder('FFMpeg\Format\AudioInterface')->getMock();
         $audioFormat->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $audioFormat->expects($this->any())
             ->method('getAudioCodec')
             ->will($this->returnValue('patati-patata-audio'));
@@ -295,7 +293,7 @@ class VideoTest extends AbstractStreamableTestCase
         $audioVideoFormat = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $audioVideoFormat->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $audioVideoFormat->expects($this->any())
             ->method('getVideoCodec')
             ->will($this->returnValue('gloubi-boulga-video'));
@@ -316,12 +314,12 @@ class VideoTest extends AbstractStreamableTestCase
             ->will($this->returnValue(2));
         $audioVideoFormat->expects($this->any())
             ->method('getAdditionalParameters')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $audioVideoFormatSinglePass = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $audioVideoFormatSinglePass->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $audioVideoFormatSinglePass->expects($this->any())
             ->method('getVideoCodec')
             ->will($this->returnValue('gloubi-boulga-video'));
@@ -342,12 +340,12 @@ class VideoTest extends AbstractStreamableTestCase
             ->will($this->returnValue(1));
         $audioVideoFormatSinglePass->expects($this->any())
             ->method('getAdditionalParameters')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $formatExtra = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $formatExtra->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array('extra', 'param')));
+            ->will($this->returnValue(['extra', 'param']));
         $formatExtra->expects($this->any())
             ->method('getKiloBitrate')
             ->will($this->returnValue(665));
@@ -362,12 +360,12 @@ class VideoTest extends AbstractStreamableTestCase
             ->will($this->returnValue(2));
         $formatExtra->expects($this->any())
             ->method('getAdditionalParameters')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         $formatExtra2 = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $formatExtra2->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array('extra', 'param')));
+            ->will($this->returnValue(['extra', 'param']));
         $formatExtra2->expects($this->any())
             ->method('getKiloBitrate')
             ->will($this->returnValue(665));
@@ -382,15 +380,15 @@ class VideoTest extends AbstractStreamableTestCase
             ->will($this->returnValue(2));
         $formatExtra2->expects($this->any())
             ->method('getAdditionalParameters')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
-        $listeners = array($this->getMockBuilder('Alchemy\BinaryDriver\Listeners\ListenerInterface')->getMock());
+        $listeners = [$this->getMockBuilder('Alchemy\BinaryDriver\Listeners\ListenerInterface')->getMock()];
 
         $progressableFormat = $this->getMockBuilder('Tests\FFMpeg\Unit\Media\Prog')
             ->disableOriginalConstructor()->getMock();
         $progressableFormat->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $progressableFormat->expects($this->any())
             ->method('createProgressListener')
             ->will($this->returnValue($listeners));
@@ -411,7 +409,7 @@ class VideoTest extends AbstractStreamableTestCase
             ->disableOriginalConstructor()->getMock();
         $progressableFormat2->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $progressableFormat2->expects($this->any())
             ->method('createProgressListener')
             ->will($this->returnValue($listeners));
@@ -432,7 +430,7 @@ class VideoTest extends AbstractStreamableTestCase
             ->disableOriginalConstructor()->getMock();
         $progressableAudioFormat->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
         $progressableAudioFormat->expects($this->any())
             ->method('getAudioCodec')
             ->will($this->returnValue('patati-patata-audio'));
@@ -449,142 +447,142 @@ class VideoTest extends AbstractStreamableTestCase
             ->method('getPasses')
             ->will($this->returnValue(1));
 
-        return array(
-            array(false, array(array(
-                    '-y', '-i', __FILE__, '-b:v', '663k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 1, '-passlogfile',
-                    '/target/file',
-                ), array(
-                    '-y', '-i', __FILE__,
-                    '-b:v', '663k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 2, '-passlogfile',
-                    '/target/file',
-                )), null, $format),
-            array(false, array(array(
-                    '-y', '-i', __FILE__,
-                    '-vcodec', 'gloubi-boulga-video',
-                    '-acodec', 'patati-patata-audio', '-b:v', '664k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
-                    '/target/file',
-                ), array(
-                    '-y', '-i', __FILE__,
-                    '-vcodec', 'gloubi-boulga-video',
-                    '-acodec', 'patati-patata-audio',
-                    '-b:v', '664k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
-                    '/target/file',
-                )), null, $audioVideoFormat),
-            array(false, array(array(
-                    '-y', '-i', __FILE__,
-                    '-vcodec', 'gloubi-boulga-video',
-                    '-acodec', 'patati-patata-audio', '-b:v', '664k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2',
-                    '/target/file',
-                )), null, $audioVideoFormatSinglePass),
-            array(false, array(array(
-                    '-y', '-i', __FILE__,
-                    'extra', 'param','-b:v', '665k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
-                    '/target/file',
-                ), array(
-                    '-y', '-i', __FILE__,
-                    'extra', 'param', '-b:v', '665k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
-                    '/target/file',
-                )), null, $formatExtra),
-            array(true, array(array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24, '-b:v', '663k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 1, '-passlogfile',
-                    '/target/file',
-                ), array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24,
-                    '-b:v', '663k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 2, '-passlogfile',
-                    '/target/file',
-                )), null, $format2),
-            array(true, array(array(
-                    '-y', '-i', __FILE__,
-                    'extra', 'param', '-threads', 24, '-b:v', '665k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
-                    '/target/file',
-                ), array(
-                    '-y', '-i', __FILE__,
-                    'extra', 'param', '-threads', 24, '-b:v', '665k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
-                    '/target/file',
-                )), null, $formatExtra2),
-            array(false, array(array(
-                    '-y', '-i', __FILE__, '-b:v', '666k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
-                    '/target/file',
-                ), array(
-                    '-y', '-i', __FILE__,
-                    '-b:v', '666k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
-                    '/target/file',
-                )), $listeners, $progressableFormat2),
-            array(true, array(array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24, '-b:v', '666k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
-                    '/target/file',
-                ), array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24,
-                    '-b:v', '666k',
-                    '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
-                    '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
-                    '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
-                    '/target/file',
-                )), $listeners, $progressableFormat),
-            array(true, array(array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24, '-acodec', 'patati-patata-audio',
-                    '-b:a', '92k', '-ac', '2',
-                    '/target/file',
-                )), null, $audioFormat),
-            array(true, array(array(
-                    '-y', '-i', __FILE__,
-                    '-threads', 24, '-acodec', 'patati-patata-audio',
-                    '-b:a', '92k', '-ac', '2',
-                    '/target/file',
-                )), $listeners, $progressableAudioFormat),
-        );
+        return [
+            [false, [[
+                '-y', '-i', __FILE__, '-b:v', '663k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 1, '-passlogfile',
+                '/target/file',
+            ], [
+                '-y', '-i', __FILE__,
+                '-b:v', '663k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 2, '-passlogfile',
+                '/target/file',
+            ]], null, $format],
+            [false, [[
+                '-y', '-i', __FILE__,
+                '-vcodec', 'gloubi-boulga-video',
+                '-acodec', 'patati-patata-audio', '-b:v', '664k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
+                '/target/file',
+            ], [
+                '-y', '-i', __FILE__,
+                '-vcodec', 'gloubi-boulga-video',
+                '-acodec', 'patati-patata-audio',
+                '-b:v', '664k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
+                '/target/file',
+            ]], null, $audioVideoFormat],
+            [false, [[
+                '-y', '-i', __FILE__,
+                '-vcodec', 'gloubi-boulga-video',
+                '-acodec', 'patati-patata-audio', '-b:v', '664k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2',
+                '/target/file',
+            ]], null, $audioVideoFormatSinglePass],
+            [false, [[
+                '-y', '-i', __FILE__,
+                'extra', 'param', '-b:v', '665k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
+                '/target/file',
+            ], [
+                '-y', '-i', __FILE__,
+                'extra', 'param', '-b:v', '665k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
+                '/target/file',
+            ]], null, $formatExtra],
+            [true, [[
+                '-y', '-i', __FILE__,
+                '-threads', 24, '-b:v', '663k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 1, '-passlogfile',
+                '/target/file',
+            ], [
+                '-y', '-i', __FILE__,
+                '-threads', 24,
+                '-b:v', '663k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', 2, 'foo', 'bar', '-pass', 2, '-passlogfile',
+                '/target/file',
+            ]], null, $format2],
+            [true, [[
+                '-y', '-i', __FILE__,
+                'extra', 'param', '-threads', 24, '-b:v', '665k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
+                '/target/file',
+            ], [
+                '-y', '-i', __FILE__,
+                'extra', 'param', '-threads', 24, '-b:v', '665k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
+                '/target/file',
+            ]], null, $formatExtra2],
+            [false, [[
+                '-y', '-i', __FILE__, '-b:v', '666k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
+                '/target/file',
+            ], [
+                '-y', '-i', __FILE__,
+                '-b:v', '666k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
+                '/target/file',
+            ]], $listeners, $progressableFormat2],
+            [true, [[
+                '-y', '-i', __FILE__,
+                '-threads', 24, '-b:v', '666k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '1', '-passlogfile',
+                '/target/file',
+            ], [
+                '-y', '-i', __FILE__,
+                '-threads', 24,
+                '-b:v', '666k',
+                '-refs', '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
+                '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71', '-qcomp', '0.6',
+                '-qdiff', '4', '-trellis', '1', '-b:a', '92k', '-ac', '2', '-pass', '2', '-passlogfile',
+                '/target/file',
+            ]], $listeners, $progressableFormat],
+            [true, [[
+                '-y', '-i', __FILE__,
+                '-threads', 24, '-acodec', 'patati-patata-audio',
+                '-b:a', '92k', '-ac', '2',
+                '/target/file',
+            ]], null, $audioFormat],
+            [true, [[
+                '-y', '-i', __FILE__,
+                '-threads', 24, '-acodec', 'patati-patata-audio',
+                '-b:a', '92k', '-ac', '2',
+                '/target/file',
+            ]], $listeners, $progressableAudioFormat],
+        ];
     }
 
     public function testSaveShouldNotStoreCodecFiltersInTheMedia()
     {
-        $driver = $this->getFFMpegDriverMock();
+        $driver  = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
         $configuration = $this->getMockBuilder('Alchemy\BinaryDriver\ConfigurationInterface')->getMock();
@@ -603,7 +601,7 @@ class VideoTest extends AbstractStreamableTestCase
             ->with($this->equalTo('ffmpeg.threads'))
             ->will($this->returnValue(24));
 
-        $capturedCommands = array();
+        $capturedCommands = [];
 
         $driver->expects($this->exactly(4))
             ->method('command')
@@ -617,7 +615,7 @@ class VideoTest extends AbstractStreamableTestCase
         $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
         $format->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array('param')));
+            ->will($this->returnValue(['param']));
         $format->expects($this->any())
             ->method('getPasses')
             ->will($this->returnValue(2));
@@ -626,20 +624,20 @@ class VideoTest extends AbstractStreamableTestCase
         $video->save($format, $outputPathfile);
         $video->save($format, $outputPathfile);
 
-        $expectedPass1 = array(
+        $expectedPass1 = [
             '-y', '-i', __FILE__, 'param', '-threads', 24, '-b:v', 'k', '-refs',
             '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
             '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71',
             '-qcomp', '0.6', '-qdiff', '4', '-trellis', '1',
             '-pass', '1', '-passlogfile', '/target/file',
-        );
-        $expectedPass2 = array(
+        ];
+        $expectedPass2 = [
             '-y', '-i', __FILE__, 'param', '-threads', 24, '-b:v', 'k', '-refs',
             '6', '-coder', '1', '-sc_threshold', '40', '-flags', '+loop',
             '-me_range', '16', '-subq', '7', '-i_qfactor', '0.71',
             '-qcomp', '0.6', '-qdiff', '4', '-trellis', '1',
             '-pass', '2', '-passlogfile', '/target/file',
-        );
+        ];
 
         $n = 1;
         foreach ($capturedCommands as $capturedCommand) {
@@ -674,16 +672,16 @@ class VideoTest extends AbstractStreamableTestCase
             } else {
                 $this->assertEquals($expectedPass1, $capturedCommand);
             }
-            $n++;
+            ++$n;
         }
     }
 
     public function testCaseWhereKiloBitRateIsEqualToZero()
     {
-        $driver = $this->getFFMpegDriverMock();
+        $driver  = $this->getFFMpegDriverMock();
         $ffprobe = $this->getFFProbeMock();
 
-        $pathfile = '/target/destination';
+        $pathfile       = '/target/destination';
         $outputPathfile = '/target/file';
 
         $format = new X264();
diff --git a/tests/Unit/Media/WaveformTest.php b/tests/FFMpeg/Unit/Media/WaveformTest.php
similarity index 91%
rename from tests/Unit/Media/WaveformTest.php
rename to tests/FFMpeg/Unit/Media/WaveformTest.php
index dfa9795..a358cf4 100644
--- a/tests/Unit/Media/WaveformTest.php
+++ b/tests/FFMpeg/Unit/Media/WaveformTest.php
@@ -6,7 +6,6 @@ use FFMpeg\Media\Waveform;
 
 class WaveformTest extends AbstractMediaTestCase
 {
-
     public function testFiltersReturnFilters()
     {
         $driver = $this->getFFMpegDriverMock();
@@ -58,14 +57,14 @@ class WaveformTest extends AbstractMediaTestCase
 
     public function provideSaveOptions()
     {
-        return array(
-            array(
-                array(
-                    '-y', '-i', NULL, '-filter_complex',
+        return [
+            [
+                [
+                    '-y', '-i', null, '-filter_complex',
                     'showwavespic=colors=#FFFFFF:s=640x120',
                     '-frames:v', '1',
-                ),
-            ),
-        );
+                ],
+            ],
+        ];
     }
 }
diff --git a/tests/Unit/TestCase.php b/tests/FFMpeg/Unit/TestCase.php
similarity index 98%
rename from tests/Unit/TestCase.php
rename to tests/FFMpeg/Unit/TestCase.php
index 2171a78..47cd2c8 100644
--- a/tests/Unit/TestCase.php
+++ b/tests/FFMpeg/Unit/TestCase.php
@@ -161,7 +161,7 @@ class TestCase extends BaseTestCase
 
         $FormatInterface->expects($this->any())
             ->method('getExtraParams')
-            ->will($this->returnValue(array()));
+            ->will($this->returnValue([]));
 
         return $FormatInterface;
     }
diff --git a/tests/files/02_-_Favorite_Secrets.mp3 b/tests/FFMpeg/files/02_-_Favorite_Secrets.mp3
similarity index 100%
rename from tests/files/02_-_Favorite_Secrets.mp3
rename to tests/FFMpeg/files/02_-_Favorite_Secrets.mp3
diff --git a/tests/files/Audio.mp3 b/tests/FFMpeg/files/Audio.mp3
similarity index 100%
rename from tests/files/Audio.mp3
rename to tests/FFMpeg/files/Audio.mp3
diff --git a/tests/files/Jahzzar_-_05_-_Siesta.mp3 b/tests/FFMpeg/files/Jahzzar_-_05_-_Siesta.mp3
similarity index 100%
rename from tests/files/Jahzzar_-_05_-_Siesta.mp3
rename to tests/FFMpeg/files/Jahzzar_-_05_-_Siesta.mp3
diff --git a/tests/files/Test.ogv b/tests/FFMpeg/files/Test.ogv
similarity index 100%
rename from tests/files/Test.ogv
rename to tests/FFMpeg/files/Test.ogv
diff --git a/tests/files/WrongFile.mp4 b/tests/FFMpeg/files/WrongFile.mp4
similarity index 100%
rename from tests/files/WrongFile.mp4
rename to tests/FFMpeg/files/WrongFile.mp4
diff --git a/tests/files/concat-list.txt b/tests/FFMpeg/files/concat-list.txt
similarity index 100%
rename from tests/files/concat-list.txt
rename to tests/FFMpeg/files/concat-list.txt
diff --git a/tests/files/portrait.MOV b/tests/FFMpeg/files/portrait.MOV
similarity index 100%
rename from tests/files/portrait.MOV
rename to tests/FFMpeg/files/portrait.MOV
diff --git a/tests/files/sample.3gp b/tests/FFMpeg/files/sample.3gp
similarity index 100%
rename from tests/files/sample.3gp
rename to tests/FFMpeg/files/sample.3gp
diff --git a/tests/files/watermark.png b/tests/FFMpeg/files/watermark.png
similarity index 100%
rename from tests/files/watermark.png
rename to tests/FFMpeg/files/watermark.png
diff --git a/tests/fixtures/ffprobe/help.raw b/tests/FFMpeg/fixtures/ffprobe/help.raw
similarity index 100%
rename from tests/fixtures/ffprobe/help.raw
rename to tests/FFMpeg/fixtures/ffprobe/help.raw
diff --git a/tests/fixtures/ffprobe/show_format.json b/tests/FFMpeg/fixtures/ffprobe/show_format.json
similarity index 100%
rename from tests/fixtures/ffprobe/show_format.json
rename to tests/FFMpeg/fixtures/ffprobe/show_format.json
diff --git a/tests/fixtures/ffprobe/show_format.raw b/tests/FFMpeg/fixtures/ffprobe/show_format.raw
similarity index 100%
rename from tests/fixtures/ffprobe/show_format.raw
rename to tests/FFMpeg/fixtures/ffprobe/show_format.raw
diff --git a/tests/fixtures/ffprobe/show_streams.json b/tests/FFMpeg/fixtures/ffprobe/show_streams.json
similarity index 100%
rename from tests/fixtures/ffprobe/show_streams.json
rename to tests/FFMpeg/fixtures/ffprobe/show_streams.json
diff --git a/tests/fixtures/ffprobe/show_streams.raw b/tests/FFMpeg/fixtures/ffprobe/show_streams.raw
similarity index 100%
rename from tests/fixtures/ffprobe/show_streams.raw
rename to tests/FFMpeg/fixtures/ffprobe/show_streams.raw
diff --git a/tests/Unit/Coordinate/AspectRatioTest.php b/tests/Unit/Coordinate/AspectRatioTest.php
deleted file mode 100644
index 100b6b7..0000000
--- a/tests/Unit/Coordinate/AspectRatioTest.php
+++ /dev/null
@@ -1,83 +0,0 @@
-assertEquals($expected, $ratio->getValue());
-
-        $this->assertEquals($calculatedHeight, $ratio->calculateHeight(240, $modulus));
-        $this->assertEquals($calculatedWidth, $ratio->calculateWidth(320, $modulus));
-    }
-
-    public function provideDimensionsAndExpectedratio()
-    {
-        return array(
-            //AR_5_4
-            array(720, 576, false, 5/4, 400, 192),
-            array(720, 577, false, 5/4, 400, 192),
-            array(720, 620, false, 720/620, 372, 206),
-            array(720, 576, true, 5/4, 400, 192),
-            //AR_ROTATED_4_5
-            array(576, 720, false, 4/5, 256, 300),
-            array(576, 720, true, 4/5, 256, 300),
-            //AR_4_3
-            array(320, 240, false, 4/3, 426, 180),
-            array(320, 240, true, 4/3, 426, 180),
-            //AR_ROTATED_3_4
-            array(240, 320, false, 3/4, 240, 320),
-            array(240, 320, true, 3/4, 240, 320),
-            //AR_16_9
-            array(1920, 1080, false, 16/9, 568, 136),
-            array(1920, 1080, true, 16/9, 568, 136),
-            array(1280, 720, false, 16/9, 568, 136),
-            array(1280, 720, true, 16/9, 568, 136),
-            array(3840, 2160, false, 16/9, 568, 136),
-            array(3840, 2160, true, 16/9, 568, 136),
-            // modulus 4
-            array(1920, 1080, false, 16/9, 568, 136, 4),
-            array(1920, 1080, true, 16/9, 568, 136, 4),
-            array(1280, 720, false, 16/9, 568, 136, 4),
-            array(1280, 720, true, 16/9, 568, 136, 4),
-            array(3840, 2160, false, 16/9, 568, 136, 4),
-            array(3840, 2160, true, 16/9, 568, 136, 4),
-            // modulus 16
-            array(1920, 1080, false, 16/9, 576, 128, 16),
-            array(1920, 1080, true, 16/9, 576, 128, 16),
-            array(1280, 720, false, 16/9, 576, 128, 16),
-            array(1280, 720, true, 16/9, 576, 128, 16),
-            array(3840, 2160, false, 16/9, 576, 128, 16),
-            array(3840, 2160, true, 16/9, 576, 128, 16),
-            //AR_ROTATED_9_16
-            array(1080, 1920, false, 9/16, 180, 426),
-            array(1080, 1920, true, 9/16, 180, 426),
-            array(720, 1280, false, 9/16, 180, 426),
-            array(720, 1280, true, 9/16, 180, 426),
-            array(2160, 3840, false, 9/16, 180, 426),
-            array(2160, 3840, true, 9/16, 180, 426),
-            //AR_3_2
-            array(360, 240, false, 3/2, 480, 160),
-            array(360, 240, true, 3/2, 480, 160),
-            //AR_ROTATED_2_3
-            array(240, 360, false, 2/3, 214, 360),
-            array(240, 360, true, 2/3, 214, 360),
-            //AR_5_3
-            //AR_ROTATED_3_5
-            //AR_1_1
-            //AR_1_DOT_85_1
-            //AR_ROTATED_1_DOT_85
-            //AR_2_DOT_39_1
-            //AR_ROTATED_2_DOT_39
-        );
-    }
-}
diff --git a/tests/Unit/FFMpegServiceProviderTest.php b/tests/Unit/FFMpegServiceProviderTest.php
deleted file mode 100644
index 86476c8..0000000
--- a/tests/Unit/FFMpegServiceProviderTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-markTestSkipped('You MUST have silex/silex installed.');
-        }
-    }
-
-    public function testWithConfig()
-    {
-        $app = new Application();
-        $app->register(new FFMpegServiceProvider(), array(
-            'ffmpeg.configuration' => array(
-                'ffmpeg.threads'   => 12,
-                'ffmpeg.timeout'   => 10666,
-                'ffprobe.timeout'  => 4242,
-            )
-        ));
-
-        $this->assertInstanceOf('FFMpeg\FFMpeg', $app['ffmpeg']);
-        $this->assertSame($app['ffmpeg'], $app['ffmpeg.ffmpeg']);
-        $this->assertInstanceOf('FFMpeg\FFProbe', $app['ffmpeg.ffprobe']);
-
-        $this->assertEquals(12, $app['ffmpeg']->getFFMpegDriver()->getConfiguration()->get('ffmpeg.threads'));
-        $this->assertEquals(10666, $app['ffmpeg']->getFFMpegDriver()->getProcessBuilderFactory()->getTimeout());
-        $this->assertEquals(4242, $app['ffmpeg.ffprobe']->getFFProbeDriver()->getProcessBuilderFactory()->getTimeout());
-    }
-
-    public function testWithoutConfig()
-    {
-        $app = new Application();
-        $app->register(new FFMpegServiceProvider());
-
-        $this->assertInstanceOf('FFMpeg\FFMpeg', $app['ffmpeg']);
-        $this->assertSame($app['ffmpeg'], $app['ffmpeg.ffmpeg']);
-        $this->assertInstanceOf('FFMpeg\FFProbe', $app['ffmpeg.ffprobe']);
-
-        $this->assertEquals(4, $app['ffmpeg']->getFFMpegDriver()->getConfiguration()->get('ffmpeg.threads'));
-        $this->assertEquals(300, $app['ffmpeg']->getFFMpegDriver()->getProcessBuilderFactory()->getTimeout());
-        $this->assertEquals(30, $app['ffmpeg.ffprobe']->getFFProbeDriver()->getProcessBuilderFactory()->getTimeout());
-    }
-
-    public function testWithFFMpegBinaryConfig()
-    {
-        $app = new Application();
-        $app->register(new FFMpegServiceProvider(), array(
-            'ffmpeg.configuration' => array(
-                'ffmpeg.binaries' => '/path/to/ffmpeg',
-            )
-        ));
-
-        $this->expectException('\FFMpeg\Exception\ExecutableNotFoundException', 'Unable to load FFMpeg');
-        $app['ffmpeg'];
-    }
-
-    public function testWithFFMprobeBinaryConfig()
-    {
-        $app = new Application();
-        $app->register(new FFMpegServiceProvider(), array(
-            'ffmpeg.configuration' => array(
-                'ffprobe.binaries' => '/path/to/ffprobe',
-            )
-        ));
-
-        $this->expectException('\FFMpeg\Exception\ExecutableNotFoundException', 'Unable to load FFProbe');
-        $app['ffmpeg.ffprobe'];
-    }
-}
diff --git a/tests/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php b/tests/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php
deleted file mode 100644
index 23981c2..0000000
--- a/tests/Unit/Filters/Video/ExtractMultipleFramesFilterTest.php
+++ /dev/null
@@ -1,72 +0,0 @@
-getVideoMock();
-        $pathfile = '/path/to/file'.mt_rand();
-
-        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
-        $format->expects($this->any())
-            ->method('getModulus')
-            ->will($this->returnValue($modulus));
-
-        $streams = new StreamCollection(array(
-            new Stream(array(
-                'codec_type' => 'video',
-                'duration'      => $duration,
-            ))
-        ));
-
-        $video->expects($this->once())
-            ->method('getStreams')
-            ->will($this->returnValue($streams));
-
-        $filter = new ExtractMultipleFramesFilter($frameRate, $destinationFolder);
-        $filter->setFrameFileType($frameFileType);
-        $this->assertEquals($expected, $filter->apply($video, $format));
-    }
-
-    public function provideFrameRates()
-    {
-        return array(
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_SEC, 'jpg', '/', 100, 2, array('-vf', 'fps=1/1', '/frame-%03d.jpg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_2SEC, 'jpg', '/', 100, 2, array('-vf', 'fps=1/2', '/frame-%02d.jpg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_5SEC, 'jpg', '/', 100, 2, array('-vf', 'fps=1/5', '/frame-%02d.jpg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, 'jpg', '/', 100, 2, array('-vf', 'fps=1/10', '/frame-%02d.jpg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_30SEC, 'jpg', '/', 100, 2, array('-vf', 'fps=1/30', '/frame-%02d.jpg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_60SEC, 'jpg', '/', 100, 2, array('-vf', 'fps=1/60', '/frame-%02d.jpg')),
-
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_SEC, 'jpeg', '/', 100, 2, array('-vf', 'fps=1/1', '/frame-%03d.jpeg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_2SEC, 'jpeg', '/', 100, 2, array('-vf', 'fps=1/2', '/frame-%02d.jpeg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_5SEC, 'jpeg', '/', 100, 2, array('-vf', 'fps=1/5', '/frame-%02d.jpeg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, 'jpeg', '/', 100, 2, array('-vf', 'fps=1/10', '/frame-%02d.jpeg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_30SEC, 'jpeg', '/', 100, 2, array('-vf', 'fps=1/30', '/frame-%02d.jpeg')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_60SEC, 'jpeg', '/', 100, 2, array('-vf', 'fps=1/60', '/frame-%02d.jpeg')),
-
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_SEC, 'png', '/', 100, 2, array('-vf', 'fps=1/1', '/frame-%03d.png')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_2SEC, 'png', '/', 100, 2, array('-vf', 'fps=1/2', '/frame-%02d.png')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_5SEC, 'png', '/', 100, 2, array('-vf', 'fps=1/5', '/frame-%02d.png')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, 'png', '/', 100, 2, array('-vf', 'fps=1/10', '/frame-%02d.png')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_30SEC, 'png', '/', 100, 2, array('-vf', 'fps=1/30', '/frame-%02d.png')),
-            array(ExtractMultipleFramesFilter::FRAMERATE_EVERY_60SEC, 'png', '/', 100, 2, array('-vf', 'fps=1/60', '/frame-%02d.png')),
-        );
-    }
-
-    public function testInvalidFrameFileType() {
-        $this->expectException('\FFMpeg\Exception\InvalidArgumentException');
-        $filter = new ExtractMultipleFramesFilter('1/1', '/');
-        $filter->setFrameFileType('webm');
-    }
-}
diff --git a/tests/Unit/Filters/Video/PadFilterTest.php b/tests/Unit/Filters/Video/PadFilterTest.php
deleted file mode 100644
index 04b9ae5..0000000
--- a/tests/Unit/Filters/Video/PadFilterTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-getVideoMock();
-        $pathfile = '/path/to/file'.mt_rand();
-
-        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
-
-        $streams = new StreamCollection(array(
-            new Stream(array(
-                'codec_type' => 'video',
-                'width'      => $width,
-                'height'     => $height,
-            ))
-        ));
-
-        $filter = new PadFilter($dimension);
-        $this->assertEquals($expected, $filter->apply($video, $format));
-    }
-
-    public function provideDimensions()
-    {
-        return array(
-            array(new Dimension(1000, 800), 640, 480, array('-vf', 'scale=iw*min(1000/iw\,800/ih):ih*min(1000/iw\,800/ih),pad=1000:800:(1000-iw)/2:(800-ih)/2')),
-            array(new Dimension(300, 600), 640, 480, array('-vf', 'scale=iw*min(300/iw\,600/ih):ih*min(300/iw\,600/ih),pad=300:600:(300-iw)/2:(600-ih)/2')),
-            array(new Dimension(100, 900), 640, 480, array('-vf', 'scale=iw*min(100/iw\,900/ih):ih*min(100/iw\,900/ih),pad=100:900:(100-iw)/2:(900-ih)/2')),
-            array(new Dimension(1200, 200), 640, 480, array('-vf', 'scale=iw*min(1200/iw\,200/ih):ih*min(1200/iw\,200/ih),pad=1200:200:(1200-iw)/2:(200-ih)/2')),
-        );
-    }
-}
diff --git a/tests/Unit/Filters/Video/ResizeFilterTest.php b/tests/Unit/Filters/Video/ResizeFilterTest.php
deleted file mode 100644
index 82eebf8..0000000
--- a/tests/Unit/Filters/Video/ResizeFilterTest.php
+++ /dev/null
@@ -1,75 +0,0 @@
-getVideoMock();
-        $pathfile = '/path/to/file'.mt_rand();
-
-        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
-        $format->expects($this->any())
-            ->method('getModulus')
-            ->will($this->returnValue($modulus));
-
-        $streams = new StreamCollection(array(
-            new Stream(array(
-                'codec_type' => 'video',
-                'width'      => $width,
-                'height'     => $height,
-            ))
-        ));
-
-        $video->expects($this->once())
-            ->method('getStreams')
-            ->will($this->returnValue($streams));
-
-        $filter = new ResizeFilter($dimension, $mode, $forceStandards);
-        $this->assertEquals($expected, $filter->apply($video, $format));
-    }
-
-    public function provideDimensions()
-    {
-        return array(
-            array(new Dimension(320, 240), ResizeFilter::RESIZEMODE_FIT, 640, 480, 2, array('-vf', '[in]scale=320:240 [out]')),
-            array(new Dimension(320, 240), ResizeFilter::RESIZEMODE_INSET, 640, 480, 2, array('-vf', '[in]scale=320:240 [out]')),
-            array(new Dimension(320, 240), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 640, 480, 2, array('-vf', '[in]scale=320:240 [out]')),
-            array(new Dimension(320, 240), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 640, 480, 2, array('-vf', '[in]scale=320:240 [out]')),
-
-            array(new Dimension(640, 480), ResizeFilter::RESIZEMODE_FIT, 320, 240, 2, array('-vf', '[in]scale=640:480 [out]')),
-            array(new Dimension(640, 480), ResizeFilter::RESIZEMODE_INSET, 320, 240, 2, array('-vf', '[in]scale=640:480 [out]')),
-            array(new Dimension(640, 480), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 320, 240, 2, array('-vf', '[in]scale=640:480 [out]')),
-            array(new Dimension(640, 480), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 320, 240, 2, array('-vf', '[in]scale=640:480 [out]')),
-
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_FIT, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_INSET, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_FIT, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_INSET, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-            array(new Dimension(640, 360), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 1280, 720, 2, array('-vf', '[in]scale=640:360 [out]')),
-
-            // test non standard dimension
-            array(new Dimension(700, 150), ResizeFilter::RESIZEMODE_INSET, 123, 456, 2, array('-vf', '[in]scale=62:150 [out]'), true),
-            array(new Dimension(700, 150), ResizeFilter::RESIZEMODE_INSET, 123, 456, 2, array('-vf', '[in]scale=40:150 [out]'), false),
-
-            array(new Dimension(320, 320), ResizeFilter::RESIZEMODE_FIT, 640, 480, 2, array('-vf', '[in]scale=320:320 [out]')),
-            array(new Dimension(320, 320), ResizeFilter::RESIZEMODE_INSET, 640, 480, 2, array('-vf', '[in]scale=320:240 [out]')),
-            array(new Dimension(320, 320), ResizeFilter::RESIZEMODE_SCALE_HEIGHT, 640, 480, 2, array('-vf', '[in]scale=320:240 [out]')),
-            array(new Dimension(320, 320), ResizeFilter::RESIZEMODE_SCALE_WIDTH, 640, 480, 2, array('-vf', '[in]scale=426:320 [out]')),
-        );
-    }
-}
diff --git a/tests/Unit/Filters/Video/WatermarkFilterTest.php b/tests/Unit/Filters/Video/WatermarkFilterTest.php
deleted file mode 100644
index 8fd43a8..0000000
--- a/tests/Unit/Filters/Video/WatermarkFilterTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
- 320, 'height' => 240, 'codec_type' => 'video'));
-        $streams = new StreamCollection(array($stream));
-
-        $video = $this->getVideoMock();
-
-        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
-
-        $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png');
-        $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=0:0 [out]'), $filter->apply($video, $format));
-
-        // check size of video is unchanged
-        $this->assertEquals(320, $stream->get('width'));
-        $this->assertEquals(240, $stream->get('height'));
-    }
-
-    public function testDifferentCoordinaates()
-    {
-        $video = $this->getVideoMock();
-        $format = $this->getMockBuilder('FFMpeg\Format\VideoInterface')->getMock();
-
-        // test position absolute
-        $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array(
-            'position' => 'absolute',
-            'x' => 10, 'y' => 5
-        ));
-        $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=10:5 [out]'), $filter->apply($video, $format));
-
-        // test position relative
-        $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array(
-            'position' => 'relative',
-            'bottom' => 10, 'left' => 5
-        ));
-        $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=5:main_h - 10 - overlay_h [out]'), $filter->apply($video, $format));
-
-        // test position relative
-        $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array(
-            'position' => 'relative',
-            'bottom' => 5, 'right' => 4
-        ));
-        $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=main_w - 4 - overlay_w:main_h - 5 - overlay_h [out]'), $filter->apply($video, $format));
-
-        // test position relative
-        $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array(
-            'position' => 'relative',
-            'left' => 5, 'top' => 11
-        ));
-        $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=5:11 [out]'), $filter->apply($video, $format));
-    }
-}
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index 9611e83..4a337cc 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -1,6 +1,7 @@