Page 1 sur 1

swf vers flv avec ffmpeg php

Posté : 30 avr. 2007, 14:58
par regne
bonjour,

je cherche un tuto ou quelqu'un qui pourrait me renseigner pour encoder du swf vers flv avec ffmpeg php...

je precise ffmpeg est deja installer, il marche trés bien avec d'autres formats.

merci

Posté : 30 avr. 2007, 15:10
par @rthur
Bonjour,

As tu essayé ceci en ligne de commande:

Code : Tout sélectionner

ffmpeg -i file.swf file.flv
Si oui, qu'obtiens-tu?

Posté : 30 avr. 2007, 15:47
par regne
en faite voila ma ligne de commande :
$ffmpeg_cli = "$ffmpeg_path -i $fullpath -acodec mp3  -b 800k  -er 4  -ar 22050 -f flv -s 640x480 -y $target_name";
donc je pense que c'est la meme chose que ta ligne en un peu plus compliqué...

et le resultat ca donne ca :

Warning: Can't open movie file ../videos/test.swf in /var/www/vhosts/monsite.fr/httpdocs/admin/valid_video.php on line 55 
Nom du média : test.swf (../videos/test.swf)
 ERREUR : impossible d'instancier FFMPEG / Media invalide

Posté : 02 mai 2007, 11:54
par regne
bon en faites je viens de m'apercevoir que ma ligne de commande n'est meme pas traité dans le code, car elle est dans un if, et que apparement avec les videos en swf on passe direct au else qui est :

ERREUR : impossible d'instancier FFMPEG / Media invalide

le if c'est : if(is_object($mediaObj = new ffmpeg_movie($fullpath) ))


est ce que ca dit quelque chose a quelqu'un ??

Posté : 02 mai 2007, 14:23
par momox
Tu dois seulement tester la variable et non l'ensemble de la déclaration de la classe :)

Posté : 02 mai 2007, 14:27
par regne
merci de ta rep

est ce que tu peut expliquer un peu car la je capte pas...

Posté : 02 mai 2007, 15:15
par jojolapine
et bien au lieu de faire
if(is_object($mediaObj = new ffmpeg_movie($fullpath) )) 
il faut faire
$mediaObj = new ffmpeg_movie($fullpath);
if(is_object($mediaObj )) 
//...

Posté : 02 mai 2007, 15:15
par regne
a oki merci je test ca

Posté : 02 mai 2007, 15:22
par regne
bon ben ca marche toujours pas... le message est le meme...

Posté : 02 mai 2007, 15:28
par jojolapine
Au temps pour moi, j'avais pas vu ton message d'erreur...
Il faut que tu vérifies les droits et/ou l'existence du fichier test.swf

Posté : 02 mai 2007, 15:32
par regne
alors tout ce qui est droit, chemin d'accées et fichier c'est bon, car je convertie d'autre format (avi to flv par ex) et ca marche...

is_objet verifie que mon test.swf est un objet et je pense que ca vient de la...
est ce qu'un fichier swf est un objet ??

Posté : 02 mai 2007, 15:33
par jojolapine
montre nous la ligne 55 de ton code (et un peu avant un peu après)

Posté : 02 mai 2007, 15:39
par regne
alors la ligne 55 c'est :
			if(is_object($mediaObj = new ffmpeg_movie($fullpath) ))
et mon code je vais le mettre en entier car y'en a beaucoup...
// RecupÈration d'info
$id=$_GET["id"]; 

$requete = mysql_query("SELECT * FROM liste_video WHERE id='$id'");

$row = mysql_fetch_assoc($requete);

//rÈcupÈre nom  video et image
$media=$row['video'];	

// dÈfinition de la collection de medias
$media_path = "../videos";

// Confirme que l'extension est presente
$extension = "ffmpeg";
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;
if (!extension_loaded('ffmpeg')) {
	dl($extension_soname) or die("Impossible de trouver l'extension: $extension_fullname\n");
}

/**
 * Traitements
 * - on parcourt le repertoire,
 * - on ouvre le mÈdia,
 * - on test le mÈdia (type)
 * - on extrait des informations
 */
$HTML ='';
if(is_dir($media_path) && $dir = opendir($media_path)) 
{
	    //$media = readdir($dir); 
	
	
			$fullpath = $media_path.'/'.$media;
			$HTML .= "<b> Nom du mÈdia : $media ($fullpath) </b>\n";

			
			// Instanciation de ffmpeg_movie
			
			if(is_object($mediaObj = new ffmpeg_movie($fullpath) ))
			{
				
				//**
				 //* FFMPEG-PHP est normalement destinÈ ‡ trater des vidÈos.
				 //* Mais les mÈthodes fournies permettent d'Èlargir aux fichiers audios si on considere qu'un fichier audio
				// * est une vidÈo sans codec video mais avec codec audio ;)
				// */
				if($videoCodec = $mediaObj->getVideoCodec()) 
				{
					$HTML .= "<li> Le fichier est un fichier vidÈo \n";
					$HTML .= "<li> Codec Video : ".$videoCodec;
					$HTML .= "<li> Codec Audio : ".$mediaObj->getAudioCodec();
					$HTML .= "<li> Duree : ".$mediaObj->getDuration();
					$HTML .= "<li> Taille : ".$mediaObj->getFrameHeight()."x".$mediaObj->getFrameWidth();
					$HTML .= "<li> BitRate : ".$mediaObj->getBitRate();
					
					/**
					 * ------------------------------------------------------------------------------------------------- 
					 * ENCODAGE 
					 * Si le fichier est une vidÈo valide, 
					 * - nous allons lancer l'encodage via ffmpeg (en ligne de commande)
					 * - l'encodage se fera en FLV, 
					 * ------------------------------------------------------------------------------------------------- 
					 */
					
					// Construction de la ligne de commande
					$flv_path = "../medias";
					$ffmpeg_path = "/usr/local/bin/ffmpeg";
					$newmedia = substr($media, 0, -4);
					$newjpg = $id.'.jpg';
					$newmedia = $id.'.flv';
					
					$target_name = preg_replace('/ /','_',$flv_path.'/'.$newmedia);
					$target_jpg = preg_replace('/ /','_',$flv_path.'/'.$newjpg);
			
                    $ffmpeg_cli = "$ffmpeg_path -i $fullpath -acodec mp3  -b 800k  -er 4  -ar 22050 -f flv -s 640x480 -y $target_name";
					
				//$ffmpeg_cli = "$ffmpeg_path -i $fullpath -acodec mp3 -ab 32 -f flv -s 640x480 -ar 22050   -b 800k -r 15 -y $target_name";
echo $ffmpeg_cli; 

$mov = new ffmpeg_movie ( $fullpath, false ); 
$frame = 10; 
$mini_frame = $mov->getFrame($frame); 
if( $mini_frame ) { 
     $image = $mini_frame ->toGDImage(); 
     if( $image ) { 
            imagejpeg($image, $target_jpg ); 
            imagedestroy($image); 
     } 
} 







					//print `$ffmpeg_cli`;
					$HTML .= "<li> commande : $ffmpeg_cli \n"; 
					//$HTML .= "<li> commande : $ffmpeg_cli2 \n"; 
					passthru($ffmpeg_cli,$res);
					if(!$res){
						$HTML .= " **********************************************************\n";
						$HTML .= " ****************  cliquez sur suivant ********************\n";
						$HTML .= " **********************************************************\n";
						$HTML .= " **********************************************************\n";
						$HTML .= " <a href=\"http://www.video-formation.fr/medias/redimension2.php?img=$newjpg\">Suivant</a>\n";
						$HTML .= " **********************************************************\n";
						$HTML .= " **********************************************************\n";
						$validation=mysql_query("UPDATE liste_video SET valid=1,video='$newmedia',image='$newjpg' WHERE id=$id");
						if(!$validation) die('RequÍte invalide dans la base de donnÈe : ' . mysql_error()); 
						mysql_close();
						$source_file="/var/www/vhosts/video-formation.fr/httpdocs/videos/";
						unlink($source_file.$media);//effacement du fichier	
					}
					else 
					{
					 	$HTML .= "<li> Erreur lors de l'encodage $target_name\n";
					}
					// ------------------------------------------------------------------------------------------------- 
					
				} 
				else 
				{
					$HTML .= "<b> PROBLEME </b> : le fichier n'a ni audio ni frames valides";
				}
				
				$HTML .= "\n\n";
			} else {
				     $HTML .= "<b> ERREUR </b> : impossible d'instancier FFMPEG / Media invalide \n";
			       }
			
		
	
}
else echo "trouve pas le rep";

print nl2br($HTML);
?>