swf vers flv avec ffmpeg php

Eléphant du PHP | 199 Messages

30 avr. 2007, 14:58

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 avr. 2007, 15:10

Bonjour,

As tu essayé ceci en ligne de commande:

Code : Tout sélectionner

ffmpeg -i file.swf file.flv
Si oui, qu'obtiens-tu?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 199 Messages

30 avr. 2007, 15:47

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

Eléphant du PHP | 199 Messages

02 mai 2007, 11:54

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 ??

Mammouth du PHP | 1511 Messages

02 mai 2007, 14:23

Tu dois seulement tester la variable et non l'ensemble de la déclaration de la classe :)

Eléphant du PHP | 199 Messages

02 mai 2007, 14:27

merci de ta rep

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

ViPHP
ViPHP | 3607 Messages

02 mai 2007, 15:15

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 )) 
//...

Eléphant du PHP | 199 Messages

02 mai 2007, 15:15

a oki merci je test ca

Eléphant du PHP | 199 Messages

02 mai 2007, 15:22

bon ben ca marche toujours pas... le message est le meme...

ViPHP
ViPHP | 3607 Messages

02 mai 2007, 15:28

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

Eléphant du PHP | 199 Messages

02 mai 2007, 15:32

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 ??

ViPHP
ViPHP | 3607 Messages

02 mai 2007, 15:33

montre nous la ligne 55 de ton code (et un peu avant un peu après)

Eléphant du PHP | 199 Messages

02 mai 2007, 15:39

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);
?>