From 8f3b65dec6b31185797ed9260688d6ce814a1a7b Mon Sep 17 00:00:00 2001 From: Maxime Veber Date: Fri, 2 Dec 2016 16:34:37 +0100 Subject: [PATCH] Add support for aac codec of ffmpeg3 --- CHANGELOG.md | 1 + src/FFMpeg/Format/Video/X264.php | 2 +- tests/Functional/VideoTranscodeTest.php | 36 ++++++++++++++++++++++-- tests/files/sample.3gp | Bin 0 -> 28561 bytes 4 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 tests/files/sample.3gp diff --git a/CHANGELOG.md b/CHANGELOG.md index def4d95..74357f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Added - Add pull request and issue templates. +- Usage of new codec "aac" of ffmpeg 3 ### Changed diff --git a/src/FFMpeg/Format/Video/X264.php b/src/FFMpeg/Format/Video/X264.php index 5f8e8d9..66f079b 100644 --- a/src/FFMpeg/Format/Video/X264.php +++ b/src/FFMpeg/Format/Video/X264.php @@ -51,7 +51,7 @@ class X264 extends DefaultVideo */ public function getAvailableAudioCodecs() { - return array('libvo_aacenc', 'libfaac', 'libmp3lame', 'libfdk_aac'); + return array('aac', 'libvo_aacenc', 'libfaac', 'libmp3lame', 'libfdk_aac'); } /** diff --git a/tests/Functional/VideoTranscodeTest.php b/tests/Functional/VideoTranscodeTest.php index f36f1c5..1bae7ed 100644 --- a/tests/Functional/VideoTranscodeTest.php +++ b/tests/Functional/VideoTranscodeTest.php @@ -25,7 +25,37 @@ class VideoTranscodeTest extends FunctionalTestCase $lastPercentage = null; $phpunit = $this; - $codec = new X264('libvo_aacenc'); + $codec = new X264('aac'); + $codec->on('progress', function ($video, $codec, $percentage) use ($phpunit, &$lastPercentage) { + if (null !== $lastPercentage) { + $phpunit->assertGreaterThanOrEqual($lastPercentage, $percentage); + } + $lastPercentage = $percentage; + $phpunit->assertGreaterThanOrEqual(0, $percentage); + $phpunit->assertLessThanOrEqual(100, $percentage); + }); + + $video->save($codec, $filename); + $this->assertFileExists($filename); + unlink($filename); + } + + public function testAacTranscodeX264() + { + $filename = __DIR__ . '/output/output-x264_2.mp4'; + if (is_file($filename)) { + unlink(__DIR__ . '/output/output-x264_2.mp4'); + } + + $ffmpeg = $this->getFFMpeg(); + $video = $ffmpeg->open(__DIR__ . '/../files/sample.3gp'); + + $this->assertInstanceOf('FFMpeg\Media\Video', $video); + + $lastPercentage = null; + $phpunit = $this; + + $codec = new X264('aac'); $codec->on('progress', function ($video, $codec, $percentage) use ($phpunit, &$lastPercentage) { if (null !== $lastPercentage) { $phpunit->assertGreaterThanOrEqual($lastPercentage, $percentage); @@ -55,7 +85,7 @@ class VideoTranscodeTest extends FunctionalTestCase $video = new Video(__DIR__ . '/../files/UnknownFileTest.ogv', $ffmpeg->getFFMpegDriver(), $ffmpeg->getFFProbe()); $this->setExpectedException('FFMpeg\Exception\RuntimeException'); - $video->save(new X264('libvo_aacenc'), __DIR__ . '/output/output-x264.mp4'); + $video->save(new X264('aac'), __DIR__ . '/output/output-x264.mp4'); } public function testTranscodePortraitVideo() @@ -77,7 +107,7 @@ class VideoTranscodeTest extends FunctionalTestCase $video->filters() ->resize(new Dimension(320, 240), ResizeFilter::RESIZEMODE_INSET) ->rotate(RotateFilter::ROTATE_90); - $video->save(new X264('libvo_aacenc'), $filename); + $video->save(new X264('aac'), $filename); $dimension = $ffmpeg->getFFProbe() ->streams($filename) diff --git a/tests/files/sample.3gp b/tests/files/sample.3gp new file mode 100644 index 0000000000000000000000000000000000000000..4a3d8ea66f8a260c33a5647199f10e0be83bbedc GIT binary patch literal 28561 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 X)EZ`Vf+PHC&->}+U2(_a<(~foem?(- literal 0 HcmV?d00001