Ffmpeg-php [Résolu]

Signaler
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 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...

48 réponses

Messages postés
5
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
11 juin 2009

j ai trouve ca sur le net
J'ai téléchargé l'archive rar trouvée sur cette page.
après décompression, j'ai pris les fichiers
avcodec.dll
et
avformat.dll
et je les ai mis sous
system32
. Ca c'est pour la librairie ffmpeg en elle même.
Ensuite j'ai pris
php_ffmpeg_20050618_nogif.dll
pour la version php installée, je l'ai renommé en php_ffmpeg.dll et je l'ai mis dans le dossier extension de l'installation de PHP.
Je suis sous EasyPHP, donc chez moi c'est sous
C:\Program Files\EasyPHP1-8\php\extensions
ça c'est pour la librairie ffmpeg-php.

après il faut faire en sorte que PHP soit au courant qu'on a une extension. c'est là qu'il y a une subtilité car le 8968## fichier php.ini qui est dans le répertoire du dessus n'a pas l'air de servir à grand chose.
C'est donc seulement quand j'ai fait la modif dans le php.ini de apache, que ça a fonctionné, soit chez moi sous :
C:\Program Files\EasyPHP1-8\apache\php.ini




La modif à faire c'est d'ajouter la ligne :

extension =php_ffmpeg.dll




Si possible au même endroit que les autres lignes d'extensions ( le ';' servant à marquer les lignes commentaires. )

voilà. Il faut maintenant redemarrer apache, sous EasyPHP un click droit sur l'icone et redemarrer devrait suffire.Pour vérifier si l'extension est bien chargée, tu peux visualiser le phpinfo, il devrait y avoir un petit tableau concernant ffmpeg-php.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>




<?php
$movie = new ffmpeg_movie( "
http://127.0.0.1/christian/ adrien2.avi", false);
//Sélection de la vidéo


$frame = $movie->getFrame(30);
//Selection de la frame voulue, la 30ème de la vidéo, ici => Il doit y avoir moyen de recuperer le nobre de frame de cette vidéo, et d'extraire aléatoirement une de ces frame, mais pas encore trouvé <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://forum.pcastuces.com/images/smile_crazy.gif" src="file:///C:\DOCUME~1\COMPAQ~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>!!


$gd_image = $frame->toGDImage();
//génération de l image


imagejpeg($gd_image, "http://127.0.0.1/christian/adrien1.jpeg", 90);
//enregistrement où tu veux
bernard ramey
Messages postés
14
Date d'inscription
mardi 20 mai 2003
Statut
Membre
Dernière intervention
19 janvier 2009

voila un petit avant gout de ce que lon peut faire avec ffmpeg http://www.supinfo-projects.com/fr/2006/pres%5Fffmpeg%5Fphp/3/
Messages postés
1
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
13 août 2006

Je suis dans le même cas que vous mais sur serveur Superplan chez OVH sous RedHat... j'ai installé ffmpeg impeccable... mais impossible d'installer ffmpeg-php de la manière expliquée sur le site officiel...
Donc : HEEEELP !

i.MajiBOX.com -  pour les développeurs i-modeTM

Thierry LONDAR
Messages postés
1
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
16 août 2007

bonjour,

bon moi j'ai pas de pb pour l'installation, l'encodage marche et l'image aussi mais par contre je ne sais pas comment recupérer la durée de la vidéo...
vous pouvez m'aider?
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Salut!
Il existe la fonction getDuration() permettant de récupérer, comme son nom l'indique, la durée de la vidéo.

(Whaou! ça faisait un bout de temps que je n'avais pas posté sur phpcs....)

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
2
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
13 janvier 2008

Salut tout le monde!
Alors, moi g réussi à installer ffmpeg et l'extension dans le php.ini mais, g un méga problème !
Quand j'essaie d'utiliser une des méthodes de l'extension, j'obtiens ce message suivant :

Warning: Persistent movies have been disabled in php.ini in ***
Warning: Can't open movie file *** in ***
Fatal error: Call to a member function on a non-object in ***

Y'aurait pas quelqu'un qui saurait pourquoi je n'y arrive pas ??!
Messages postés
8
Date d'inscription
vendredi 11 février 2005
Statut
Membre
Dernière intervention
9 janvier 2008

Idem, j'ai le même probleme  :

Warning: Persistent movies have been disabled in php.ini in ***
Warning: Can't open movie file *** in ***
Fatal error: Call to a member function on a non-object in ***

Dans easyphp l'extension est chargée (on la voit dans le phpinfo), par contre dans la liste des fonctions des extensions, bizzarement la ligne "ffmpeg" ne contient aucune fonction, quelqu'un sait si cela a un rapport ?
Ca fait deux jours que je m'arrache les cheveux avec l'install de cette extension. D'après ce que je vois elle est installé mais ne fonctionne pas correctement. J'ai pourtant suivi toutes les indications trouvé sur moulte forum ..... sans résultat. C'est d'autant plus rageant que pas mal de monde semble s'en sortir avec la meme config : winXp, easyphp 1.8 avec php 4.3.10.
Quelqu'un a du nouveau sur ce sujet ? hheeeeeelppppp !
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Salut,
Il faut peut-être aussi rajouter l'extension et le nouveau mime type à gérer dans les fichiers httpd.conf et mime_type.conf.
Je dis "peut-être" car ça fait longtemps que je n'ai pas mis les mains dedans...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
8
Date d'inscription
vendredi 11 février 2005
Statut
Membre
Dernière intervention
9 janvier 2008

Salut et merci pour ta réponse si rapide ! Par contre je ne suis pas expert de ce genre de manip, est-ce que tu peux être un chouille plus précis pour que j'essaye ?

Rapport à mes reflexions sur le sujet : si je comprend bien, le fait d'ajouter avcodec.dll et avformat.dll à system32 suffit à ajouter ffmpeg, il faut ensuite expliquer a easyphp comment l'utiliser c'est bien ça ? Je me suis longtemps demander si il ne fallait pas ajouter plus que ça, j'entend une application entière ffmpeg par exemple, tout cela est un peu flou pour moi. C'est très bloquant car je n'ai aucun serveur dédié sous la main, et je fais mes tests en local pour ce nouveau projet video que j'ai en tête et là ....... je suis carrement stopper !
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Oulà...c'est vieux tout ça...
Essayons d'être clair et précis.

Pour installer ffmpeg:
- mettre avcodec.dll et avformat.dll dans system32
- ajouter php_ffmpeg.dll dans le répertoire d'extension de php: C:\Program Files\EasyPHP\php\extension

Pour dire à PHP qu'une nouvelle extension est présente:
- modifier le php.ini dans C:\Program Files\EasyPHP\apache\php.ini: il faut ajouter la ligne suivante (au niveau du bloc extension)
extension=php_ffmpeg.dll

Voilà. Je m'inspire de la réponse de Ramay1 (voir plus haut).

J'espère que cela peut t'aider...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
8
Date d'inscription
vendredi 11 février 2005
Statut
Membre
Dernière intervention
9 janvier 2008

Yep, c'est bien ce que j'ai fait ... mais ça marche po ooouuuhiiiiinnnnn !
Merci pour ton aide en tout cas, je vais continuer a chercher et tester ça sur d'autres config parce que chez moi y'a vraiment pas moyen impossible de le faire marcher, je me retrouve éternellement avec la meme erreur :

Warning: Persistent movies have been disabled in php.ini in ***
Warning: Can't open movie file *** in ***
Fatal error: Call to a member function on a non-object in ***

pour info mon script est simplement le suivant :
<?
$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");
}

$movie = new ffmpeg_movie('test.avi', false);
$movie = $movie->getFrame(30);
?>
avec test.avi dans le même dossier que ce script ... a savoir à la racine du site. Je déprime ...
Messages postés
2
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
13 janvier 2008

Ben moi non plu, g toujours pa trouver mon problème en lisant toutes vos réponses....  Je désespère !!  Je continue de chercher et si jamais g du nouveau je vous transmettrè...
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
26 mars 2009

Salut,

Au moment de créer votre objet movie, indiquez le chemin comme ceci:

$movie = new ffmpeg_movie(dirname(__FILE__) . '/test.avi');

ffmpeg n'attend pas une url mais un chemin direct vers le fichier.

Tout est expliqué dans le fichier test_ffmpeg.php joint avec le build officiel.
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

bonjour,
moi , j'ai respecté les etapes que vous avez cité mais j'ai un problème au moment du démarrage de php . un message d'erreur s'affiche :
LE POINT D'ENTREE DE PROCEDURE_SAFE_EMALLOC EST INTROUVABLE DANS LA BIBLIOTHEQUE DE LIENS DYNAMIQUES php4ts.dll . 
puis ce message :
UNABLE TO LOAD DYNAMIC LIBRARY 'C:\ProgramFiles\Easyphp\extensions\php_ffmpeg.dll' - La procedure spécifiée est introuvable .
merci de votre aide c'est urgent .
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

bon ça marche
Messages postés
31
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
30 décembre 2008

bonjour ,
voila mon problème et j'espére que vous m'aidez :
 je travaille sur windows et easyphp 1.8, dans ma page web j'affiche le video directement en streaming de ma camera IP mais le problème c'est que je veux enregistrer ce flux vidéo dans un  fichier (programmer un bouton REC). Donc j'ai installé le ffmpeg .
si vous pouvez me proposer un code PHP à utiliser .
Messages postés
7
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2008

Ca marche mais tu as fait comment?
Parceque je galère aussi à installer ffmpeg-php.
J'ai suivi toutes les indications à la lettre et pourtant il veut pas... Et j'ai les mêmes erreurs que tu avais.

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

bon tout simplement j'ai mis a jour ma version de easyphp car j'ai utilisé une ancienne version donc j'ai installé la version 1.8 . Et ça a marché .
Messages postés
7
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2008

Je viens de mettre la version 1.8 aussi, et... Forcement ça marche pas ^^
Ca me fait planter Apache, quelqu'un aurai une idée?
Messages postés
7
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2008

Tu pourrais me donner le lien de ta version?
J'ai recommencer 300 fois, avec toutes les versions de php possible et impossible de faire marcher ce foutu ffmpeg!!!!!!!
A chaque fois il y a une erreur différente. Et la je lance easyphp et pour apache a rencontré un problème et doit fermer...
1 2 3