Pour continuer le tutoriel sur l’installation de ffmpeg et ffmpeg-php je vais ici donner quelques exemples sur leurs utilisations avec en fichier joint un script php.
Conversion d’une vidéo en FLV :
ffmpeg -y -i video.ext -ar 22050 -ab 56 -aspect 4:3 -r 12 -f flv -s 320x240 -ac 1 out_file.flv
Création d’une miniature :
ffmpeg -y -i video.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s 160x120 -ss 00:00:10 out_img.jpg
ffmpeg-php et GD
Ce petit bout de code permet de créer une miniature à partir de ffmpeg-php.
Ceci peut aussi vous servir à faire un traitement sur l’image prise avec PHP.
La miniature est prise au hasard dans la vidéo.
$video = new ffmpeg_movie("video.flv",false);
$frames = $video->getFrameCount();
$rframe = rand(1,$frames);
$frame = $video->getFrame($rframe);
$gd_img = $frame->toGDImage();
imagejpeg($gd_img,"img_out.jpg");
Script PHP CLI :
#!/usr/bin/php
<?
/**
* Conversion de vidéo en format FLV
* Création d'une miniature JPEG
* **************************************
* FFMPEG, FFMPEG-PHP, GD
* **************************************
* @author: Marc Jacquier <[email protected]>
* @www: http://www.alienxarea.com
* @version: 1.0
*/
/* PARAMS */
$out_size = "320x240"; //Taille de la vidéo un fois encodée
$img_size = "160x120"; //Taille de la miniature
$dst_path = "/home/alienx/Vidéos/"; //Chemin de destination de la vidéo + miniature
/************************/
if(!isset($argv[1]))
die("Syntax: {$argv[0]} <file>\n");
if(!file_exists($argv[1]))
die("File {$argv[1]} not found\n");
$src_infos = pathinfo($argv[1]);
$src_name = $src_infos['filename'];
$dst_pathname = $dst_path.$src_name;
//Encodage de la vidéo + enregistrement dans le repertoire de destination
system("ffmpeg -y -i ".$argv[1]." -ar 22050 -ab 56 -aspect 4:3 -r 12 -f flv -s {$out_size} -ac 1 {$dst_pathname}.flv");
/* Génération de la miniature */
$oVids = new ffmpeg_movie($dst_pathname.".flv",false);
$frames = $oVids->getFrameCount();
$rframe = rand(1, $frames); //Prend une image au hazard
$duration = $oVids->getDuration();
$time = round($rframe*$duration/$frames);
print "Time capture : ".$time."\n";
print "Frame capture : ".$rframe."\n";
$h = sprintf("%02d",round($time/3600));
$m = sprintf("%02d",round($time/60));
$s = sprintf("%02d",round($time%60));
print "Time: $h:$m:$s\n";
$time = "$h:$m:$s";
//Création de la miniature
system("ffmpeg -y -i {$dst_pathname}.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s {$img_size} -ss {$time} {$dst_pathname}.jpg");
?>