Ffmpeg-php [Résolu]

Signaler
Messages postés
14837
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 mars 2020
-
 sabiha93 -
Bonjour,

Je suis actuellement en train de développer un site de gestion de fichiers vidéo. Sur ce site, j'ai besoin d'extraire des informations utiles (genre 1ère image, durée du clip,...). On m'a parlé de FFMPEG (puissant transcodeur vidéo) qui aurait une extension PHP.

Sur le site officiel, il y a des informations pour compiler PHP avec FFMPEG sous Linux. Voici enfin mon problème:

Je suis sous Windows2000, j'ai installé PHP5 et je ne trouve nulle part l'extension ffmpeg-php.dll.

Quelqu'un peut-il m'aider?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
A voir également:

48 réponses

Messages postés
7
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2008

Bon ayé j'ai réussi, je devais mettre d'autre fichiers dans le system32!
Par contre c'est normal que dans mon administration easyPHP la ou s'affiche les extensions, quand je clique sur fonction de ffmpeg, je n'ai rien qui s'affiche?
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

j'ai le même problème . je ne sais pas si c'est normal . alors si coucou747 peut nous répondre .   
Messages postés
7
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2008

Ah je me sens moins seul du coup :)
Et j'ai un autre souci, quand je cherche les infos d'une video en .avi ou .wmv ça marche parfaitement (getTitle, duration ect...).
Par contre dès que je fais de même avec un .flv il me sort une erreur...

ffmpeg ne gère pas les flv?
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

en principe ça gère le .flv mais si ça marche avec le . avi et le .wmv ça veut dire que t'as bien installé ton ffmpeg .
mais dans mon cas je n'ai trouvé que des codes applicable sous linux . peux tu me donner le code qui affiche les infos d'une vidéo en .wmv pour que je le teste .
merci
Messages postés
7
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2008

extension_loaded('ffmpeg') or die("ffmpeg extension not loaded");
$mov = new ffmpeg_movie(dirname(__FILE__) . '/test.flv', false);
echo sprintf('Chemin : %s, Duration : %.1f, bit rate : %d, frame count : %d, video codec : %s, audio codec : %s, audio channel : %s

',
                $mov->getFilename(),
                $mov->getDuration(),
                $mov->getBitRate(),
                $mov->getFrameCount(),
                $mov->getVideoCodec(),
                $mov->getAudioCodec(),
                $mov->getAudioChannels());   

Voila le code! Change 'test.flv' par le nom de ta vidéo.
dirname(__FILE__) dit à php que le fichier vidéo est dans le même dossier que ton fichier php. Pour cibler un autre dossier je trouve ça super galère, du coup pour mes essaies j'ai tout mis dans le même.

Et j'ai trouvé cette source ici :
http://www.digitalspirit.org/blog/index.php/post/2008/10/09/Ffmpeg-et-Php
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

bon ,j'ai eu un problème au niveau de la ligne :  "$mov = new ffmpeg_movie(dirname(__FILE__) . '/test.flv', false); " j'ai modifié le test.flv par mon_nom_video.avi et le _file_ par le chemin d'accès de ma répertoire ou se trouve mes vidéo (c : .../.../.../..) qui est placé dans mes documents . dois-je le placer sous mon dossier php (le dossier où se trouvent mes vidéo)  ? 
j'arrive pas a localiser le problème .
merci pour le lien ça me semble utile . 
Messages postés
7
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2008

Bah franchement j'ai pas trop compris le système de ciblage... C'est bien le bordel et pas du tout intuitif, du coup je met mes vidéos pour le moment dans le même dossier que mon php ^^
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

bonjour ,
j'ai installé le ffmpeg correctement (du moins c'est ce que je pense) mais le problème est que lors de l'execution on m'affiche ça : "Warning: Can't open movie file ./vid.avi in c:\****\***\index.php on line 12 (line 12 :$mov = new ffmpeg_movie(VIDEO_PATH);

et ce msg : "Fatal error: Call to a member function on a non-object in ****\index.php on line 28" (line 28 : $mov->getDuration();"

et j'ai bien configurer mon ffmpeg de la façon cité par ramy .Je travaille sur windows XP et easyphp 1.8 .

est ce que quelqu'un peu m'aider ? vraiment I need help 
merci

 
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
26 mars 2009

Salut,

Peux-tu me dire ce que contient ta constante VIDEO_PATH ?
Un peu plus haut je disais que ffmpeg n'attend pas un lien URL mais un chemin direct vers le fichier vidéo. Es-tu sûr d'avoir respecté cette règle ?
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

bonjour ,
mon VIDEO_PATH est definie par cet ligne : define('VIDEO_PATH', './vid.avi');  où vid.avi se trouve dans la même repertoire que ce code .
voila le code que j'essaye de tester :
<?php
define('VIDEO_PATH', './vid.avi');

define('THUMB_SIZE_WIDTH', 100);

define('THUMB_SIZE_HEIGHT', 74);

define('THUMB_TOTAL', 50);

$mov = new ffmpeg_movie(VIDEO_PATH);

if (isset($_GET['frame'])) {

$frame = $mov->getFrame($_GET['frame']);

$frame->resize(THUMB_SIZE_WIDTH, THUMB_SIZE_HEIGHT);

$img = $frame->toGDImage();

header("Content-type: image/jpeg");

imagejpeg($img);

exit();

}

echo 'Creating thumb for '.VIDEO_PATH.'
';

echo 'Original : ['.VIDEO_PATH.' '.VIDEO_PATH.']

';

echo sprintf('Duration : %.1f, bit rate : %d, frame count : %d, video codec : %s, audio codec : %s, audio channel : %s

',

$mov->getDuration(),

$mov->getBitRate(),

$mov->getFrameCount(),

$mov->getVideoCodec(),

$mov->getAudioCodec(),

$mov->getAudioChannels());

$gif = new ffmpeg_animated_gif('out.gif', THUMB_SIZE_WIDTH, THUMB_SIZE_HEIGHT, 5, 0);

$inc = round($mov->getFrameCount() / THUMB_TOTAL);

for ($i = 1; $i < $mov->getFrameCount(); $i += $inc) {

echo ''."\n";

$frame = $mov->getFrame($i);

$gif->addFrame($frame);

}

echo 'Gif export :

';

?>

merci. 
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
26 mars 2009

Salut,

Donc c'est bien ce que je disais, tu ne respectes pas la règle de base dont je parlais. ;)
Pour rappel, ffmpeg est un logiciel installé sur ton ordinateur, son premier office est simplement de comprésser des fichiers audio et vidéos dans un format donné, pas de faire du web. Le chemin './vid.avi' ne veut strictement rien dire pour lui. Si tu veux qu'il traite ton fichier il faut que tu lui donne un chemin du genre 'c:\ffmpeg\videos\vid.avi'.

Si tu veux connaître le chemin de ton répertoire sur l'ordinateur (en local ou sur un serveur, peu importe), place dedans un fichier php contenant cette ligne et execute le:
echo __FILE__;
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
26 mars 2009

Ou plus simplement, si tu ne veux pas rentrer ton chemin en dur:
define('VIDEO_PATH', dirname(__FILE__) . '\vid.avi');
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

salut ,
merci bien , ça marche maintenant .
Donc maintenant comme mon ffmpeg fonctionne correctement . Si tu peux m'aider à resoudre ce problème :
 j'ai des vidéo .raw et à partir de ma page web je veux les convertir en .flv ou bien .wmv ( ça marche depuis l'invite de commande ) et afficher ce video en utilisant des commandes PHP.
merciiiiiii 
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
26 mars 2009

Bon, bah cool que ça marche !

En ce qui concerne ton problème, je dirais... que ce n'est pas un problème, mais du travail. ;)
Tu as essayé au moins ? (genre plus de dix minutes)
Pour ce qui est de l'affichage de la vidéo, ce n'est pas php qui rentre en compte, mais Flash. Ou alors je ne comprends pas bien ta requête.
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

Bonjour,
bien sur que j'ai essayé longtemps, et si t'as bien lu mon dernier message j'ai dis que ça marche avec l'invite de commande (Windows). Je demande s'il y a une commande PHP qui me permet d'exécuter une commande genre ( ffmpeg -i nomvideo.raw -f  wmv nomvideo.wmv) . Merci.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
26 mars 2009

Au temps pour moi.
La commande pour executer des logiciels externes, c'est tout simplement: exec('ffmpeg -i nomvideo.raw -f  wmv nomvideo.wmv');

Bonne continuation !
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

merci bien ,
mais , j'ai déja trouvé cette commande , le php c'est le dynamique mais cette commande est statique puisque je saisie à chaque fois le nom de mon vidéo dans la commande . J'ai essyé cela :
 $videoSource='CHANNEL1_200.raw'; (que je poste)
$videoDest='test.avi'; ( que je saisie)
exec('ffmpeg -i "$videoSource" -f avi "$videoDest"');
mais , malheureusement ça marche pas .
je vous remercie encore de votre aide et de votre précieuses conseil .
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
26 mars 2009

Normal que ca ne marche pas, vu que tu ne spécifies pas le chemin.
Essaie plutôt ça:
$videoSource='c:\CHANNEL1_200.raw'; (que je poste)
$videoDest='c:\test.avi'; ( que je saisie)
exec('ffmpeg -i ' . $videoSource . ' -f avi ' . $videoDest);
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

salut , je vous remerci bien . J'ai ajouté le chemin d'accès absolu puis j'ai ajouté cette commande :
$cmd = "ffmpeg -i $videoSource -f flv $videoDest";
exec($cmd);
et ça a parfaitement marché  .
ouf , enfin !!!!!!!!! 
Messages postés
11
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
24 mars 2009

$videoSource=(dirname(__FILE__) . '/test_ecoles.avi');
$videoSource=(dirname(__FILE__) . '/test_ecoles.wmv');

$cmd = "ffmpeg -i $videoSource -f wmv $videoDest";
exec($cmd);

Salut tous..
j'ai voulu convertir la vidéo mais ca marche, quelqu'un a la solution ?
Pourtant ffmpeg est bien installé... extension...ok...

Merci
1 2 3