Rename Audio to AudioInterface and Video to VideoInterface
This commit is contained in:
parent
cf97e06650
commit
ea17f2f257
12 changed files with 128 additions and 34 deletions
|
|
@ -197,18 +197,18 @@ PHP-FFMpeg provides three video formats out of the box : HTML5 video formats
|
||||||
Create your own media type
|
Create your own media type
|
||||||
++++++++++++++++++++++++++
|
++++++++++++++++++++++++++
|
||||||
|
|
||||||
PHP-FFMpeg provides ``FFMpeg\Format\Video``, as base interface for creating a
|
PHP-FFMpeg provides ``FFMpeg\Format\VideoInterface``, as base interface for
|
||||||
Video format. To define a target format, all you need to do is implement this
|
creating a Video format. To define a target format, all you need to do is
|
||||||
Interface.
|
implement this Interface.
|
||||||
|
|
||||||
.. code-block:: php
|
.. code-block:: php
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
namespace Foo\Bar;
|
namespace Foo\Bar;
|
||||||
|
|
||||||
use FFMpeg\Format\Video;
|
use FFMpeg\Format\VideoInterface;
|
||||||
|
|
||||||
class MyFormat implements Video
|
class MyFormat implements VideoInterface
|
||||||
{
|
{
|
||||||
public function getKiloBitrate()
|
public function getKiloBitrate()
|
||||||
{
|
{
|
||||||
|
|
@ -400,9 +400,9 @@ The following example initialize a Flac format and extract the audio track from
|
||||||
Create your own media type
|
Create your own media type
|
||||||
++++++++++++++++++++++++++
|
++++++++++++++++++++++++++
|
||||||
|
|
||||||
PHP-FFMpeg provides ``FFMpeg\Format\Audio``, as base interface for creating an
|
PHP-FFMpeg provides ``FFMpeg\Format\AudioInterface``, as base interface for
|
||||||
Audio format. To define a target format, all you need to do is implement this
|
creating an Audio format. To define a target format, all you need to do is
|
||||||
Interface.
|
implement this Interface.
|
||||||
|
|
||||||
This example transcodes the mp3 track to a 128kb mp3 :
|
This example transcodes the mp3 track to a 128kb mp3 :
|
||||||
|
|
||||||
|
|
@ -411,9 +411,9 @@ This example transcodes the mp3 track to a 128kb mp3 :
|
||||||
<?php
|
<?php
|
||||||
namespace Foo\Bar;
|
namespace Foo\Bar;
|
||||||
|
|
||||||
use FFMpeg\Format\Audio;
|
use FFMpeg\Format\AudioInterface;
|
||||||
|
|
||||||
class MyFormat implements Audio
|
class MyFormat implements AudioInterface
|
||||||
{
|
{
|
||||||
public function getKiloBitrate()
|
public function getKiloBitrate()
|
||||||
{
|
{
|
||||||
|
|
@ -522,9 +522,9 @@ latest AvConv / FFMPeg version, aac encoding has to be executed with extra comma
|
||||||
namespace Foo\Bar;
|
namespace Foo\Bar;
|
||||||
|
|
||||||
use FFMpeg\Format\Audio\Transcodable;
|
use FFMpeg\Format\Audio\Transcodable;
|
||||||
use FFMpeg\Format\Video;
|
use FFMpeg\Format\VideoInterface;
|
||||||
|
|
||||||
class MyFormat implements Video, Transcodable
|
class MyFormat implements VideoInterface, Transcodable
|
||||||
{
|
{
|
||||||
|
|
||||||
public function getAudioCodec()
|
public function getAudioCodec()
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ namespace FFMpeg;
|
||||||
use FFMpeg\Exception\InvalidArgumentException;
|
use FFMpeg\Exception\InvalidArgumentException;
|
||||||
use FFMpeg\Exception\LogicException;
|
use FFMpeg\Exception\LogicException;
|
||||||
use FFMpeg\Exception\RuntimeException;
|
use FFMpeg\Exception\RuntimeException;
|
||||||
use FFMpeg\Format\Audio;
|
use FFMpeg\Format\AudioInterface;
|
||||||
use FFMpeg\Format\Video;
|
use FFMpeg\Format\VideoInterface;
|
||||||
use FFMpeg\Helper\HelperInterface;
|
use FFMpeg\Helper\HelperInterface;
|
||||||
use Symfony\Component\Process\Process;
|
use Symfony\Component\Process\Process;
|
||||||
use Symfony\Component\Process\ProcessBuilder;
|
use Symfony\Component\Process\ProcessBuilder;
|
||||||
|
|
@ -183,24 +183,24 @@ class FFMpeg extends Binary
|
||||||
/**
|
/**
|
||||||
* Encode the file to the specified format
|
* Encode the file to the specified format
|
||||||
*
|
*
|
||||||
* @param Audio $format The output format
|
* @param AudioInterface $format The output format
|
||||||
* @param string $outputPathfile The pathfile where to write
|
* @param string $outputPathfile The pathfile where to write
|
||||||
* @return \FFMpeg\FFMpeg
|
* @return \FFMpeg\FFMpeg
|
||||||
* @throws RuntimeException
|
* @throws RuntimeException
|
||||||
* @throws LogicException
|
* @throws LogicException
|
||||||
*/
|
*/
|
||||||
public function encode(Audio $format, $outputPathfile)
|
public function encode(AudioInterface $format, $outputPathfile)
|
||||||
{
|
{
|
||||||
if (!$this->pathfile) {
|
if (!$this->pathfile) {
|
||||||
throw new LogicException('No file open');
|
throw new LogicException('No file open');
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case $format instanceof Video:
|
case $format instanceof VideoInterface:
|
||||||
$this->encodeVideo($format, $outputPathfile);
|
$this->encodeVideo($format, $outputPathfile);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case $format instanceof Audio:
|
case $format instanceof AudioInterface:
|
||||||
$this->encodeAudio($format, $outputPathfile);
|
$this->encodeAudio($format, $outputPathfile);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -216,7 +216,7 @@ class FFMpeg extends Binary
|
||||||
* @return \FFMpeg\FFMpeg
|
* @return \FFMpeg\FFMpeg
|
||||||
* @throws RuntimeException
|
* @throws RuntimeException
|
||||||
*/
|
*/
|
||||||
protected function encodeAudio(Audio $format, $outputPathfile)
|
protected function encodeAudio(AudioInterface $format, $outputPathfile)
|
||||||
{
|
{
|
||||||
$builder = ProcessBuilder::create(array(
|
$builder = ProcessBuilder::create(array(
|
||||||
$this->binary,
|
$this->binary,
|
||||||
|
|
@ -263,12 +263,12 @@ class FFMpeg extends Binary
|
||||||
/**
|
/**
|
||||||
* Encode to video
|
* Encode to video
|
||||||
*
|
*
|
||||||
* @param Video $format The output format
|
* @param VideoInterface $format The output format
|
||||||
* @param string $outputPathfile The pathfile where to write
|
* @param string $outputPathfile The pathfile where to write
|
||||||
* @return \FFMpeg\FFMpeg
|
* @return \FFMpeg\FFMpeg
|
||||||
* @throws RuntimeException
|
* @throws RuntimeException
|
||||||
*/
|
*/
|
||||||
protected function encodeVideo(Video $format, $outputPathfile)
|
protected function encodeVideo(VideoInterface $format, $outputPathfile)
|
||||||
{
|
{
|
||||||
$builder = ProcessBuilder::create(array(
|
$builder = ProcessBuilder::create(array(
|
||||||
$this->binary, '-y', '-i',
|
$this->binary, '-y', '-i',
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
namespace FFMpeg\Format\Audio;
|
namespace FFMpeg\Format\Audio;
|
||||||
|
|
||||||
use FFMpeg\Format\Audio as BaseAudio;
|
use FFMpeg\Format\AudioInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The resamplable audio interface
|
* The resamplable audio interface
|
||||||
|
|
@ -20,7 +20,7 @@ use FFMpeg\Format\Audio as BaseAudio;
|
||||||
*
|
*
|
||||||
* @author Romain Neutron imprec@gmail.com
|
* @author Romain Neutron imprec@gmail.com
|
||||||
*/
|
*/
|
||||||
interface Resamplable extends BaseAudio
|
interface Resamplable extends AudioInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,12 @@
|
||||||
|
|
||||||
namespace FFMpeg\Format\Audio;
|
namespace FFMpeg\Format\Audio;
|
||||||
|
|
||||||
use FFMpeg\Format\Audio as BaseAudio;
|
use FFMpeg\Format\AudioInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Romain Neutron imprec@gmail.com
|
* @author Romain Neutron imprec@gmail.com
|
||||||
*/
|
*/
|
||||||
interface Transcodable extends BaseAudio
|
interface Transcodable extends AudioInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ namespace FFMpeg\Format;
|
||||||
*
|
*
|
||||||
* @author Romain Neutron imprec@gmail.com
|
* @author Romain Neutron imprec@gmail.com
|
||||||
*/
|
*/
|
||||||
interface Audio
|
interface AudioInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
namespace FFMpeg\Format\Video;
|
namespace FFMpeg\Format\Video;
|
||||||
|
|
||||||
use FFMpeg\Format\Video as BaseVideo;
|
use FFMpeg\Format\VideoInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The resamplable video interface
|
* The resamplable video interface
|
||||||
|
|
@ -20,7 +20,7 @@ use FFMpeg\Format\Video as BaseVideo;
|
||||||
*
|
*
|
||||||
* @author Romain Neutron imprec@gmail.com
|
* @author Romain Neutron imprec@gmail.com
|
||||||
*/
|
*/
|
||||||
interface Resamplable extends BaseVideo
|
interface Resamplable extends VideoInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
namespace FFMpeg\Format\Video;
|
namespace FFMpeg\Format\Video;
|
||||||
|
|
||||||
use FFMpeg\Format\Video as BaseVideo;
|
use FFMpeg\Format\VideoInterface;
|
||||||
use FFMpeg\Format\Dimension;
|
use FFMpeg\Format\Dimension;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -21,7 +21,7 @@ use FFMpeg\Format\Dimension;
|
||||||
*
|
*
|
||||||
* @author Romain Neutron imprec@gmail.com
|
* @author Romain Neutron imprec@gmail.com
|
||||||
*/
|
*/
|
||||||
interface Resizable extends BaseVideo
|
interface Resizable extends VideoInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,12 @@
|
||||||
|
|
||||||
namespace FFMpeg\Format\Video;
|
namespace FFMpeg\Format\Video;
|
||||||
|
|
||||||
use FFMpeg\Format\Video as BaseVideo;
|
use FFMpeg\Format\VideoInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Romain Neutron imprec@gmail.com
|
* @author Romain Neutron imprec@gmail.com
|
||||||
*/
|
*/
|
||||||
interface Transcodable extends BaseVideo
|
interface Transcodable extends VideoInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
47
src/FFMpeg/Format/Video/WMV.php
Normal file
47
src/FFMpeg/Format/Video/WMV.php
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of PHP-FFmpeg.
|
||||||
|
*
|
||||||
|
* (c) Alchemy <info@alchemy.fr>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace FFMpeg\Format\Video;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The WMV video format
|
||||||
|
*
|
||||||
|
* @author Romain Neutron imprec@gmail.com
|
||||||
|
*/
|
||||||
|
class WMV extends DefaultVideo
|
||||||
|
{
|
||||||
|
protected $audioCodec = 'wmav2';
|
||||||
|
protected $videoCodec = 'wmv2';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function supportBFrames()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getAvailableAudioCodecs()
|
||||||
|
{
|
||||||
|
return array('wmav2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getAvailableVideoCodecs()
|
||||||
|
{
|
||||||
|
return array('wmv2');
|
||||||
|
}
|
||||||
|
}
|
||||||
47
src/FFMpeg/Format/Video/WMV3.php
Normal file
47
src/FFMpeg/Format/Video/WMV3.php
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of PHP-FFmpeg.
|
||||||
|
*
|
||||||
|
* (c) Alchemy <info@alchemy.fr>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace FFMpeg\Format\Video;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The WMV video format
|
||||||
|
*
|
||||||
|
* @author Romain Neutron imprec@gmail.com
|
||||||
|
*/
|
||||||
|
class WMV3 extends DefaultVideo
|
||||||
|
{
|
||||||
|
protected $audioCodec = 'wmav3';
|
||||||
|
protected $videoCodec = 'wmv3';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function supportBFrames()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getAvailableAudioCodecs()
|
||||||
|
{
|
||||||
|
return array('wmav3');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getAvailableVideoCodecs()
|
||||||
|
{
|
||||||
|
return array('wmv3');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,7 +16,7 @@ namespace FFMpeg\Format;
|
||||||
*
|
*
|
||||||
* @author Romain Neutron imprec@gmail.com
|
* @author Romain Neutron imprec@gmail.com
|
||||||
*/
|
*/
|
||||||
interface Video extends Audio
|
interface VideoInterface extends AudioInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns the number of passes
|
* Returns the number of passes
|
||||||
|
|
@ -200,7 +200,7 @@ class FFMpegTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
$dest = __DIR__ . '/../../files/encode_test.mp4';
|
$dest = __DIR__ . '/../../files/encode_test.mp4';
|
||||||
|
|
||||||
$format = new Format\Video\WebM();
|
$format = new Format\Video\X264();
|
||||||
$format-> setDimensions(32, 32);
|
$format-> setDimensions(32, 32);
|
||||||
|
|
||||||
$this->object->open(__DIR__ . '/../../files/Test.ogv');
|
$this->object->open(__DIR__ . '/../../files/Test.ogv');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue