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 :

encodevideo.php

#!/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");

?>
There are no comments.

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.