■FFmpegPHPclassの使い方
(これは、READMEドキュメント等を編集したものです)
作成:2014.2.3
■Author/Version/License
* Author : Olaf Erlandsen
* Contact : olaftriskel@gmail.com
* Skype : olaferlandsen
* Version : 0.1.3
* Date : 11.18.2013( mm.dd.yyyy )
* License : http://opensource.org/licenses/gpl-license.php
* Home Page: http://erlandsen.github.io/FFmpeg-PHP-Class/
■ffmpeg.class.phpの利用環境
「ffmpeg.class.php」は、「PHP 5.3+」で「FFmpeg 0.5.12+」である環境で利用します。
「ffmpeg-extension」を利用せずに『FFmpeg』のPHPclassラッパーで処理するものです。
■class名 FFmpeg( $ffmpeg = null ,$input = false )
_constructerでの設定
$ffmpegが省略値 'ffmpeg'
$inputがあると入力ファイルパスを設定
■FFmpegのメソッド
[ 1] call( $method , $args = array() )
[ 2] redirectOutput( $std )
[ 3] output( $output = null , $forceFormat = null )
[ 4] forceFormat( $forceFormat )
[ 5] input( $file )
[ 6] thumb( $size , $start , $videoFrames = 1 )
[ 7] clear()
[ 8] transpose( $transpose = 0 )
[ 9] vflip()
[10] flip( $flip )
[11] aspect( $aspect )
[12] bitrate( $b )
[13] frameRate( $r )
[14] size( $s )
[15] position( $ss )
[16] duration( $t )
[17] itsoffset( $itsoffset )
[18] audioSamplingFrequency( $ar )
[19] audioBitrate( $ab )
[20] audioCodec( $acodec = 'copy' )
[21] audioChannels( $ac )
[22] audioQuality( $aq )
[23] audioDisable()
[24] videoFrames( $number )
[25] videoCodec( $vcodec = 'copy' )
[26] videoDisable()
[27] overwrite()
[28] fileSizeLimit( $fs )
[29] progress( $progress )
[30] pass( $pass )
[31] ready( $append = null ) コマンド実行「exec」($appendデータを付加して)
[32] ffmpeg( $ffmpeg )
[33] set( $key , $value = null , $append = false )
[34] grayScale( )
[35] loglevel( $level = "verbose" )
■FFmpegのプロパティ
$command
■サンプルプログラム
/* ---------------------
* #1: Input & output.
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #2: Simple frame rate.
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->frameRate( '30000/1001' )->output( '/var/media/new.3gp' )->ready();
?>
/* ------------------------------------------
* #3: Simple frame rate using method alias.
* ------------------------------------------ */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->i( '/var/media/original.mp4' )->r( '30000/1001' )->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #4: Rotate video.
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->transpose( 2 )->output( '/var/media/new.3gp' )->ready();
?>
/* -----------------------------------------
* #5: Rotate video with alias "rotate".
* ----------------------------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->rotate( 2 )->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #6: Force format.
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->forceFormat( '3gp' )->output( '/var/media/new.3gp' )->ready();
?>
/* -------------------------
* #7: Force format quickly.
* ------------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->output( '/var/media/new.3gp' , '3gp' )->ready();
?>
/* ---------------------
* #8: Get command
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->output( '/var/media/new.3gp' )->command;
?>
/* ---------------------
* #9: Run command.
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #10: Gray Scale.
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->grayScale()->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #11: Set param.
* --------------------- */
<?php
$key = 'acodec';
$value = 'AAC';
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->set($key,$value)->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #12: Unset param.
* --------------------- */
<?php
$key = 'acodec';
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->unset($key)->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #13: Quick methods
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->sameq()->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #14: Flip ( V or H )
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->flip( 'v' )->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #15: hflip
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->hflip()->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #16: vflip
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/media/original.mp4' )->vflip()->output( '/var/media/new.3gp' )->ready();
?>
/* ---------------------
* #17: Complete
* --------------------- */
<?php
/**----------------------
* include FFmpeg class
*------------------------*/
include DIRNAME(DIRNAME(__FILE__)).'/src/ffmpeg.class.php';
/**---------------------------
* get options from database
*-----------------------------*/
$options = array(
'duration' => 99,
'position' => 0,
'itsoffset' => 2,
);
/**-------------
* Create command
*---------------*/
$FFmpeg = new FFmpeg( 'C:/FFmpeg/bin/ffmpeg' );
$FFmpeg->input( '/var/media/original.avi' );
$FFmpeg->transpose( 0 )->vflip()->grayScale()->vcodec('h264')->frameRate('30000/1001');
$FFmpeg->acodec( 'aac' )->audioBitrate( '192k' );
foreach( $options AS $option => $values ){
$FFmpeg->call( $option , $values );
}
$FFmpeg->output( '/var/media/new.mp4' , 'mp4' );
print($FFmpeg->command);
?>
bash
/usr/local/bin/ffmpeg -y -vf transpose=0,vflip -pix_fmt gray -vcodec h264 -r 30000/1001 -acodec aac -ab 192k -t 99 -ss 0 -itsoffset 2 -f mp4 /var/media/new.mp4 /dev/null 2<&1
/* ---------------------
* #18: Clear
* --------------------- */
<?php
$FFmpeg = new FFmpeg('/bin/ffmpeg','/var/media/original.mp4')->vflip()->output( '/var/media/new.3gp' )->clear()->input( '/var/www/file.3gp' );
?>
/* ---------------------
* #19: Thumbs
* --------------------- */
<?php
$size = '100x100';
$start = 1;
$frames = 10;
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/www/video.mp4' )->thumb( $size , $start, $frames )->ready();
?>
/* ---------------------
* #20: Image to video
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/www/images/pref%04d.png' )->frameRate( '29,97' )->size( '1920x1080' )->force('image2');
$FFmpeg->output( 'image2video.mp4' );
$FFmpeg->ready();
?>
/* --------------------------------------------
* #21: Set the FFmpeg binary file on Windows
* -------------------------------------------- */
<?php
$FFmpeg = new FFmpeg( "C:\ffmpeg\bin\ffmpeg.exe" );
$FFmpeg->input( 'C:\xampp\input.mp4' )->output( 'output.3gp' );
$FFmpeg->ready();
?>
/* ---------------------
* #22: Log level
* --------------------- */
<?php
$FFmpeg = new FFmpeg;
$FFmpeg->input( '/var/www/input.mp4' )->loglevel("debug")->output( 'output.3gp' );
$FFmpeg->ready();
?>