scratch

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 119  →  ?path2? @ 120
/vendor/php-ffmpeg/php-ffmpeg/tests/Functional/FFProbeTest.php
@@ -0,0 +1,29 @@
<?php
 
namespace Tests\FFMpeg\Functional;
 
use FFMpeg\FFProbe;
 
class FFProbeTest extends FunctionalTestCase
{
public function testProbeOnFile()
{
$ffprobe = FFProbe::create();
$this->assertGreaterThan(0, count($ffprobe->streams(__DIR__ . '/../files/Audio.mp3')));
}
 
/**
* @expectedException FFMpeg\Exception\RuntimeException
*/
public function testProbeOnUnexistantFile()
{
$ffprobe = FFProbe::create();
$ffprobe->streams('/path/to/no/file');
}
 
public function testProbeOnRemoteFile()
{
$ffprobe = FFProbe::create();
$this->assertGreaterThan(0, count($ffprobe->streams('http://vjs.zencdn.net/v/oceans.mp4')));
}
}
/vendor/php-ffmpeg/php-ffmpeg/tests/Functional/FunctionalTestCase.php
@@ -0,0 +1,16 @@
<?php
 
namespace Tests\FFMpeg\Functional;
 
use FFMpeg\FFMpeg;
 
abstract class FunctionalTestCase extends \PHPUnit_Framework_TestCase
{
/**
* @return FFMpeg
*/
public function getFFMpeg()
{
return FFMpeg::create(array('timeout' => 300));
}
}
/vendor/php-ffmpeg/php-ffmpeg/tests/Functional/VideoTranscodeTest.php
@@ -0,0 +1,148 @@
<?php
 
namespace Tests\FFMpeg\Functional;
 
use FFMpeg\Coordinate\Dimension;
use FFMpeg\Filters\Video\ResizeFilter;
use FFMpeg\Filters\Video\RotateFilter;
use FFMpeg\Format\Video\X264;
use FFMpeg\Media\Video;
 
class VideoTranscodeTest extends FunctionalTestCase
{
public function testSimpleTranscodeX264()
{
$filename = __DIR__ . '/output/output-x264.mp4';
if (is_file($filename)) {
unlink(__DIR__ . '/output/output-x264.mp4');
}
 
$ffmpeg = $this->getFFMpeg();
$video = $ffmpeg->open(__DIR__ . '/../files/Test.ogv');
 
$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);
}
$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);
}
$lastPercentage = $percentage;
$phpunit->assertGreaterThanOrEqual(0, $percentage);
$phpunit->assertLessThanOrEqual(100, $percentage);
});
 
$video->save($codec, $filename);
$this->assertFileExists($filename);
unlink($filename);
}
 
/**
* @expectedException \FFMpeg\Exception\RuntimeException
*/
public function testTranscodeInvalidFile()
{
$ffmpeg = $this->getFFMpeg();
$ffmpeg->open(__DIR__ . '/../files/UnknownFileTest.ogv');
}
 
public function testSaveInvalidForgedVideo()
{
$ffmpeg = $this->getFFMpeg();
$video = new Video(__DIR__ . '/../files/UnknownFileTest.ogv', $ffmpeg->getFFMpegDriver(), $ffmpeg->getFFProbe());
 
$this->setExpectedException('FFMpeg\Exception\RuntimeException');
$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', '<')) {
$this->markTestSkipped('This version of avconv is buggy and does not support this test.');
}
 
$filename = __DIR__ . '/output/output-x264.mp4';
if (is_file($filename)) {
unlink(__DIR__ . '/output/output-x264.mp4');
}
 
$ffmpeg = $this->getFFMpeg();
$video = $ffmpeg->open(__DIR__ . '/../files/portrait.MOV');
 
$video->filters()
->resize(new Dimension(320, 240), ResizeFilter::RESIZEMODE_INSET)
->rotate(RotateFilter::ROTATE_90);
$video->save(new X264('aac'), $filename);
 
$dimension = $ffmpeg->getFFProbe()
->streams($filename)
->videos()
->first()
->getDimensions();
 
$this->assertLessThan(1, $dimension->getRatio(false)->getValue());
$this->assertEquals(240, $dimension->getHeight());
 
$this->assertFileExists($filename);
unlink($filename);
}
 
private function getNameAndVersion()
{
$binary = $this
->getFFMpeg()
->getFFMpegDriver()
->getProcessBuilderFactory()
->getBinary();
 
$output = $matches = null;
exec($binary . ' -version 2>&1', $output);
 
if (!isset($output[0])) {
return array('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 array('name' => null, 'version' => null);
}
}
/vendor/php-ffmpeg/php-ffmpeg/tests/Functional/output/.placeholder