Ffmpeg-php

Résolu
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 12 oct. 2005 à 15:52
 sabiha93 - 5 août 2010 à 18:17
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

laipreu Messages postés 7 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 5 décembre 2008
4 déc. 2008 à 14:34
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?
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
5 déc. 2008 à 11:23
j'ai le même problème . je ne sais pas si c'est normal . alors si coucou747 peut nous répondre .   
0
laipreu Messages postés 7 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 5 décembre 2008
5 déc. 2008 à 14:55
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?
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
5 déc. 2008 à 15:14
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
laipreu Messages postés 7 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 5 décembre 2008
5 déc. 2008 à 15:28
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
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
5 déc. 2008 à 16:05
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 . 
0
laipreu Messages postés 7 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 5 décembre 2008
5 déc. 2008 à 16:43
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 ^^
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
15 déc. 2008 à 13:50
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

 
0
Benarkhan Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 26 mars 2009
15 déc. 2008 à 17:43
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 ?
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
16 déc. 2008 à 10:57
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. 
0
Benarkhan Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 26 mars 2009
19 déc. 2008 à 16:10
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__;
0
Benarkhan Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 26 mars 2009
19 déc. 2008 à 16:20
Ou plus simplement, si tu ne veux pas rentrer ton chemin en dur:
define('VIDEO_PATH', dirname(__FILE__) . '\vid.avi');
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
19 déc. 2008 à 16:27
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 
0
Benarkhan Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 26 mars 2009
20 déc. 2008 à 09:57
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.
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
22 déc. 2008 à 12:40
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" /??>
0
Benarkhan Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 26 mars 2009
29 déc. 2008 à 00:31
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 !
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
30 déc. 2008 à 12:37
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 .
0
Benarkhan Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 26 mars 2009
1 janv. 2009 à 16:52
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);
0
cs_meryyy Messages postés 31 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 30 décembre 2008
2 janv. 2009 à 15:42
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 !!!!!!!!! 
0
cs_ramsou Messages postés 10 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 24 mars 2009
24 mars 2009 à 14:49
$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
0