Page 1 sur 1

encodage video avec ffmpeg

Posté : 07 déc. 2006, 00:00
par regne
bonjour,

voila j'ai installer ffmpeg et ffmpeg-php sur mon serveur.


j'essaye de faire un test pour encoder une video, mais je me retrouve avec cette erreur :


Nom du média : video-mov.mov (medias/video-mov.mov)
# Le fichier est un fichier vidéo
# Codec Video : svq3
# Codec Audio : mp2
# Duree : 65.724082
# Taille : 240x320
# BitRate : 460066
# commande : ffmpeg -i medias/video-mov.mov -acodec mp3 -b 256 -er 4 -ar 22050 -f flv -y flv/1165441979-video-mov.mov.flv
# Erreur lors de l'encodage flv/1165441979-video-mov.mov.flv



voila le script que j'utilise :


<?php
/**
 * Fichier demo FFMPEG/PHP
 * montre le principe d'utilisation de FFMPEG/PHP pour :
 * - créer un objet ffmpeg-php,
 * - accèder à une vidéo,
 * - faire la différence entre un fichier audio et un fichier vidéo
 * - extraire des informations des médias.
 * - encoder en flv si le fichier est une video
 * 
 * @author Nicolas Cerisier <[email protected]>
 */

/**
 * Init: 
 * - définition d'un emplacement pour les médias
 * - présence de ffmpeg
 */

// définition de la collection de medias
$media_path = 'medias';

// 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
 */

if(is_dir($media_path) && $dir = opendir($media_path)) {
	while (($media = readdir($dir)) !== false) {
		if($media != '.' && $media != '..'){
			$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 = "flv";
					$target_name = preg_replace('/ /','_',$flv_path.'/'.time().'-'.$media.'.flv');
			
					$ffmpeg_cli = "ffmpeg -i $fullpath -acodec mp3 -b 256 -er 4  -ar 22050 -f flv -y $target_name";
					
					//print `$ffmpeg_cli`;
					$HTML .= "<li> commande : $ffmpeg_cli \n"; 
					passthru($ffmpeg_cli,$res);
					if(!$res){
						$HTML .= "<li> fichier flv disponible <a href=\"$target_name\"> ici </a>\n";
					} else {
					 	$HTML .= "<li> Erreur lors de l'encodage \n";
					}
					// ------------------------------------------------------------------------------------------------- 
					
				} elseif($audioCodec = $mediaObj->getAudioCodec()) {
					$HTML .= "<li> Le fichier semble etre un fichier audio: pas de frames, mais une piste audio\n";
					$HTML .= "<li> Codec Audio : ".$audioCodec;
					$HTML .= "<li> Artist (iD3) : ".$mediaObj->getArtist();
					$HTML .= "<li> Album (iD3) : ".$mediaObj->getAlbum();
					$HTML .= "<li> Artist (iD3) : ".$mediaObj->getArtist();
					$HTML .= "<li> Genre (iD3) : ".$mediaObj->getGenre();
					$HTML .= "<li> BitRate : ".$mediaObj->getBitRate();
					
					
				} 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";
			}
			
		}
	}
}

print nl2br($HTML);
?>

si quelqu'un a deja installer ou utiliser ffmpeg et qu'il peut m'aider ca serai cool ;-)

merci d'avance

Posté : 07 déc. 2006, 12:21
par regne
petit up...

personne n'utilise ce logiciel ???

Posté : 10 déc. 2006, 21:29
par regne
bon je n'arrive toujours rien a encoder si quelqu'un a deja utiliser le logiciel ou si quelqu'un a un script a me filer ca serai superbe !

merci d'avance

Posté : 10 déc. 2006, 23:17
par Cyrano
Modération :
regne, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connait la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

Posté : 13 déc. 2006, 10:58
par regne
daccord desolé pour les up alors...

bon je pense que ma question été bien formulé.

la reponse ne prenais pas plus de temps que ca non plus...

bref le reponse été simple le chemin d'accées que je donné jusqu'a l'aplication ffmpeg n'était pas le bon.

voila c'est reglé et ca marche.