ffmpeg-mappable-media/docs/source/Recipes.rst
2012-05-28 14:29:20 +02:00

122 lines
2.8 KiB
ReStructuredText

PHP FFMpeg Recipes
==================
Initializing FFMpeg
-------------------
In the examples we will show you, we assume we work in an environnment where
FFMpeg has been initialized to ``$ffmpeg`` var ; there are two ways to
initialize the environment :
Loading FFMpeg automatically
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The easiest way to initialize ``FMpeg`` it is to call the loader ; this will
look in your PATH environment variable to find ffmpeg/avconv binary :
.. code-block:: php
<?php
use Monolog\Logger;
use Monolog\Handler\NullHandler;
use FFMpeg\FFMpeg;
// Create a logger
$logger = new Logger('MyLogger');
$logger->pushHandler(new NullHandler());
// You have to pass a Monolog logger
// This logger provides some usefull infos about what's happening
$ffmpeg = FFMpeg::load($logger);
.. note:: FFMpeg and FFProbe both requires a logger with gives feedback about
what's happening. By passing a NullHandler to the logger, you disable the
logging system.
Use custom binary
^^^^^^^^^^^^^^^^^
You can also initialize with a custom path to the binary :
.. code-block:: php
<?php
$ffmpeg = new FFMpeg('/usr/local/src/ffmpeg/bin/ffmpeg', $logger);
Defining formats
----------------
Encode a video
^^^^^^^^^^^^^^
To encode a video, you have to define the target format. A format is an object
that implements ``FFMpeg\Format\Video``
The following example initialize a Ogg format and encodes a `Video.mpeg` to a
target file `file.ogv` :
.. code-block:: php
<?php
use FFMpeg\Format\Video\Ogg;
$oggFormat = new Ogg();
$ffmpeg->open('Video.mpeg')
->encode($oggFormat, 'file.ogv')
->close();
.. note: ``FFmpeg`` methods always return the object itself so you can chain
multiple methods.
Create HTML5 videos
^^^^^^^^^^^^^^^^^^^
PHP-FFMpeg provides three video format out of the box : HTML5 video formats.
These formats are available as these objects :
- ``FFMpeg\Format\Video\WebM``
- ``FFMpeg\Format\Video\X264``
- ``FFMpeg\Format\Video\Ogg``
.. code-block:: php
<?php
use FFMpeg\Format\Video;
$webMFormat = new Video\WebM();
$webMFormat->setDimensions(320, 240)
->setFrameRate(15)
->setGopSize(25);
$x264Format = new Video\X264();
$x264Format->setDimensions(320, 240)
->setFrameRate(15)
->setGopSize(25);
$oggFormat = new Video\Ogg();
$oggFormat->setDimensions(320, 240)
->setFrameRate(15)
->setGopSize(25);
$ffmpeg->open('Video.mpeg')
->encode($webMFormat, 'file.webm')
->encode($x264Format, 'file.mp4')
->encode($oggFormat, 'file.ogv')
->close();
.. note: Use PHP-MP4Box to make it compatible with pseudo stream !
Create your own media type
^^^^^^^^^^^^^^^^^^^^^^^^^^
FFProbe recipes
---------------
create HTML5 videos
^^^^^^^^^^^^^^^^^^^