Bonjour à tous,
Après plusieurs journées à me casser la tête sur le problème et à chercher des solutions à droite et à gauche, je fini par poster ma question dans quelques forums. Si vous avez la moindre idée ou besoin de me demander plus d'infos n'hésitez (surtout) pas ;-)
LE PROBLEME --------------------
Je cherche à installer 'ffmpeg-php' qui est un module PHP permettant d'utiliser le moteur de 'ffmpeg' (encodeur multimédia) pour extraire des données de fichiers vidéo, audio ou image comme la durée, le nombre de frames, etc...
Actuellement, 'ffmpeg' fonctionne parfaitement, 'ffmpeg-php' est également installé et correctement détecté par PHP, mais renvoie constamment des valeurs nulles (durrée = 0secondes, 0 frames, etc...).
Ci-après toutes les informations que je peux donner sur l'environnement dans lequel je travail, les test que j'ai réalisé, les infos que je peux donner. C'est, je l'espère, relativement détaillé :
LA CONFIG ----------------------
Nous avons effectué un transfert de serveur le WE dernier. Nous sommes hébergés (chez OVH.com) sur un serveur Intel Core2Duo sous Gentoo (OVH release 2) 64 bits. Sont installés : apache 2, php5 (avec GL2), ffmpeg SVN-r12420.
FFMPEG --------------------------
A propos de ffmpeg, le programme semble fonctionner parfaitement. Voici ce que j'obtiens en exécutant la commande 'ffmpeg -version' :
FFMPEG-PHP ---------------------
Voici les commandes que j'ai exécuté pour compiler et installer ffmpeg-php :
Puis j'ai ajouté l'extension dans le php.ini, modifié le chemin vers le répertoire des extensions dans le même php.ini... et redémarré apache via un classique :
LE PROBLEME --------------------
L'extension est chargée par PHP mais retourne constament des valeures nulles ! Par exemple : getDuration('/path/to/file.ext') renvoie 0 pour le nombre de seconde. J'ai fais les tests sur plusieurs fichiers, dont ceux qui se trouvent dans l'archive des sources de ffmpeg-php. Le fichier ffmpeg_tests.php donne aucune erreur, mais toutes les valeures extraites des fichiers sont nulles, exemple :
La commande 'php5 --modules' indique correctement que 'ffmpeg' est dans la liste des modules.
J'ai donc retiré l'extension du php.ini, redémarré apache (ffmpeg n'est plus dans la liste des modules), et recompilé 'ffmpeg-php', mais avant de faire un 'make install', j'ai testé. Le résultat :
Voici deux piste que je ne sais pas interpréter : que veulent dire
et
Comment puis-je installer enfin ffmpeg-php correctement ? Est-ce que quelqu'un a les mêmes problèmes que moi ? Que puis-je essayer ? Qu'ai-je mal fait ?
Voici également un code PHP que j'ai fait pour tester le chargement et l'exécution du module "ffmpeg-php" :
J'obtiens en retour :
Ce qui signifie bien que le module est clairement identifié et chargé par PHP (validLoadext), et que la fonction getDuation retourne 0 (interprété comme false, d'où le print "errorFunction").
D'ailleurs, le module ffmpeg est bien présenté par la fonction phpinfos() de PHP avec les infos suivantes :
-------------------------
Je remercie d'avance celle ou celui qui pourra m'apporter son aide car je suis dans une impasse et je ne peut pas me permettre d'y rester. Nos utilisateurs du service ont besoin que ça fonctionne comme c'était le cas sur le précédent serveur.
MERCI ;-)
Après plusieurs journées à me casser la tête sur le problème et à chercher des solutions à droite et à gauche, je fini par poster ma question dans quelques forums. Si vous avez la moindre idée ou besoin de me demander plus d'infos n'hésitez (surtout) pas ;-)
LE PROBLEME --------------------
Je cherche à installer 'ffmpeg-php' qui est un module PHP permettant d'utiliser le moteur de 'ffmpeg' (encodeur multimédia) pour extraire des données de fichiers vidéo, audio ou image comme la durée, le nombre de frames, etc...
Actuellement, 'ffmpeg' fonctionne parfaitement, 'ffmpeg-php' est également installé et correctement détecté par PHP, mais renvoie constamment des valeurs nulles (durrée = 0secondes, 0 frames, etc...).
Ci-après toutes les informations que je peux donner sur l'environnement dans lequel je travail, les test que j'ai réalisé, les infos que je peux donner. C'est, je l'espère, relativement détaillé :
LA CONFIG ----------------------
Nous avons effectué un transfert de serveur le WE dernier. Nous sommes hébergés (chez OVH.com) sur un serveur Intel Core2Duo sous Gentoo (OVH release 2) 64 bits. Sont installés : apache 2, php5 (avec GL2), ffmpeg SVN-r12420.
FFMPEG --------------------------
A propos de ffmpeg, le programme semble fonctionner parfaitement. Voici ce que j'obtiens en exécutant la commande 'ffmpeg -version' :
Code:
ffmpeg -version
FFmpeg version SVN-r12420, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-static --enable-shared --cc=x86_64-pc-linux-gnu-gcc --disable-altivec --disable-ffplay --disable-ffserver --enable-libmp3lame --enable-libvorbis --enable-libgsm --enable-libtheora --enable-libdc1394 --enable-libxvid --enable-libx264 --enable-libfaad --enable-libfaac --enable-liba52 --enable-nonfree --enable-libamr-nb --enable-libamr-wb --enable-gpl --enable-pthreads --disable-strip --extra-cflags=-fPIC
libavutil version: 49.6.0
libavcodec version: 51.51.0
libavformat version: 52.9.0
libavdevice version: 52.0.0
built on Mar 11 2008 17:52:49, gcc: 3.4.5 (Gentoo 3.4.5, ssp-3.4.5-1.0, pie-8.7.9)
FFmpeg SVN-r12420
libavutil 3212800
libavcodec 3355392
libavformat 3410176
libavdevice 3407872
FFMPEG-PHP ---------------------
Voici les commandes que j'ai exécuté pour compiler et installer ffmpeg-php :
Code:
wget http://surfnet.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.1.tbz2
tar -xjf ffmpeg-php-0.5.1.tbz2
chmod -R 0777 ffmpeg-php-0.5.1
cd ./ffmpeg-php-0.5.1
phpize
./configure --prefix=/usr CFLAGS="-fPIC"
make
make install
Puis j'ai ajouté l'extension dans le php.ini, modifié le chemin vers le répertoire des extensions dans le même php.ini... et redémarré apache via un classique :
Code:
/etc/init.d/apache restart
LE PROBLEME --------------------
L'extension est chargée par PHP mais retourne constament des valeures nulles ! Par exemple : getDuration('/path/to/file.ext') renvoie 0 pour le nombre de seconde. J'ai fais les tests sur plusieurs fichiers, dont ceux qui se trouvent dans l'archive des sources de ffmpeg-php. Le fichier ffmpeg_tests.php donne aucune erreur, mais toutes les valeures extraites des fichiers sont nulles, exemple :
file name =
duration = 0 seconds
frame count = 0
frame rate = 0.000 fps
comment =
title =
author =
copyright =
get bit rate = 0
has audio = No
has video = No
La commande 'php5 --modules' indique correctement que 'ffmpeg' est dans la liste des modules.
J'ai donc retiré l'extension du php.ini, redémarré apache (ffmpeg n'est plus dans la liste des modules), et recompilé 'ffmpeg-php', mais avant de faire un 'make install', j'ai testé. Le résultat :
Code:
make test
Build complete.
Don't forget to run 'make test'.
Error in argument 1, char 2: option not found r
X-Powered-By: PHP/5.2.5-pl0-gentoo
Content-type: text/html
=====================================================================
CWD : /home/src/ffmpeg-php-0.5.1
PHP : /usr/local/php5/bin/php-cgi X-Powered-By: PHP/5.2.5-pl0-
gentoo
Content-type: text/html
PHP_SAPI : cgi
PHP_VERSION : 5.2.5-pl0-gentoo
ZEND_VERSION: 2.2.0
PHP_OS : Linux - Linux nsXXXXXX.ovh.net 2.6.24.2-xxxx-std-ipv4-64
#3 SMP Tue Feb 12 12:27:47 CET 2008 x86_64
INI actual : /usr/local/lib64/php5/php.ini
More .INIs :
Extra dirs :
=====================================================================
Running selected tests.
*** glibc detected *** free(): invalid pointer: 0x0000000000e99ba0 ***
FAIL ffmpeg animatedGif [tests/animatedGif.phpt]
FAIL ffmpeg getAudioBitRate test [tests/getAudioBitRate.phpt]
FAIL ffmpeg getAudioChannels test [tests/getAudioChannels.phpt]
FAIL ffmpeg getAudioCodec test [tests/getAudioCodec.phpt]
FAIL ffmpeg getAudioSampleRate test [tests/getAudioSampleRate.phpt]
FAIL ffmpeg getBitRate test [tests/getBitRate.phpt]
FAIL ffmpeg getDuration test [tests/getDuration.phpt]
FAIL ffmpeg getFileName test [tests/getFileName.phpt]
FAIL ffmpeg getFrame test [tests/getFrame.phpt]
FAIL ffmpeg getFrameCount test [tests/getFrameCount.phpt]
FAIL ffmpeg getFrame cropping test [tests/getFrameCrop.phpt]
FAIL ffmpeg getFrameHeight test [tests/getFrameHeight.phpt]
FAIL ffmpeg getFrameNumber test [tests/getFrameNumber.phpt]
FAIL ffmpeg getFrameRate test [tests/getFrameRate.phpt]
FAIL ffmpeg getFrameResampled test [tests/getFrameResampled.phpt]
FAIL ffmpeg getFrameWidth test [tests/getFrameWidth.phpt]
FAIL ffmpeg getFrame backwards test [tests/getFramesBackwards.phpt]
FAIL ffmpeg getFrames forward test [tests/getFramesForward.phpt]
FAIL ffmpeg getFrames forward test [tests/getFramesForwardPassedEnd.phpt]
FAIL ffmpeg getFramesNoArg test [tests/getFramesNoArg.phpt]
FAIL ffmpeg getFramesResampled test [tests/getFramesResampled.phpt]
FAIL ffmpeg getID3Info() test [tests/getID3Info.phpt]
FAIL ffmpeg getFrame without an argument test [tests/getNextKeyFrame.phpt]
FAIL ffmpeg getPTS test [tests/getPTS.phpt]
FAIL ffmpeg getPixelAspectRatio test [tests/getPixelAspectRatio.phpt]
FAIL ffmpeg getPixelFormat test [tests/getPixelFormat.phpt]
FAIL ffmpeg getVideoBitRate test [tests/getVideoBitRate.phpt]
FAIL ffmpeg getVideoCodec test [tests/getVideoCodec.phpt]
FAIL ffmpeg hasAudio test [tests/hasAudio.phpt]
FAIL ffmpeg getFrame without an argument test [tests/isKeyFrame.phpt]
FAIL ffmpeg persistent movie test [tests/persistentMovie.phpt]
=====================================================================
Number of tests : 31 31
Tests skipped : 0 ( 0.0%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 31 (100.0%) (100.0%)
Tests passed : 0 ( 0.0%) ( 0.0%)
---------------------------------------------------------------------
Time taken : 1 seconds
=====================================================================
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
ffmpeg animatedGif [tests/animatedGif.phpt]
ffmpeg getAudioBitRate test [tests/getAudioBitRate.phpt]
ffmpeg getAudioChannels test [tests/getAudioChannels.phpt]
ffmpeg getAudioCodec test [tests/getAudioCodec.phpt]
ffmpeg getAudioSampleRate test [tests/getAudioSampleRate.phpt]
ffmpeg getBitRate test [tests/getBitRate.phpt]
ffmpeg getDuration test [tests/getDuration.phpt]
ffmpeg getFileName test [tests/getFileName.phpt]
ffmpeg getFrame test [tests/getFrame.phpt]
ffmpeg getFrameCount test [tests/getFrameCount.phpt]
ffmpeg getFrame cropping test [tests/getFrameCrop.phpt]
ffmpeg getFrameHeight test [tests/getFrameHeight.phpt]
ffmpeg getFrameNumber test [tests/getFrameNumber.phpt]
ffmpeg getFrameRate test [tests/getFrameRate.phpt]
ffmpeg getFrameResampled test [tests/getFrameResampled.phpt]
ffmpeg getFrameWidth test [tests/getFrameWidth.phpt]
ffmpeg getFrame backwards test [tests/getFramesBackwards.phpt]
ffmpeg getFrames forward test [tests/getFramesForward.phpt]
ffmpeg getFrames forward test [tests/getFramesForwardPassedEnd.phpt]
ffmpeg getFramesNoArg test [tests/getFramesNoArg.phpt]
ffmpeg getFramesResampled test [tests/getFramesResampled.phpt]
ffmpeg getID3Info() test [tests/getID3Info.phpt]
ffmpeg getFrame without an argument test [tests/getNextKeyFrame.phpt]
ffmpeg getPTS test [tests/getPTS.phpt]
ffmpeg getPixelAspectRatio test [tests/getPixelAspectRatio.phpt]
ffmpeg getPixelFormat test [tests/getPixelFormat.phpt]
ffmpeg getVideoBitRate test [tests/getVideoBitRate.phpt]
ffmpeg getVideoCodec test [tests/getVideoCodec.phpt]
ffmpeg hasAudio test [tests/hasAudio.phpt]
ffmpeg getFrame without an argument test [tests/isKeyFrame.phpt]
ffmpeg persistent movie test [tests/persistentMovie.phpt]
====================================================================
Voici deux piste que je ne sais pas interpréter : que veulent dire
Code:
Error in argument 1, char 2: option not found r
et
Code:
*** glibc detected *** free(): invalid pointer: 0x0000000000e99ba0 ***
Comment puis-je installer enfin ffmpeg-php correctement ? Est-ce que quelqu'un a les mêmes problèmes que moi ? Que puis-je essayer ? Qu'ai-je mal fait ?
Voici également un code PHP que j'ai fait pour tester le chargement et l'exécution du module "ffmpeg-php" :
Code:
<?php
if (!extension_loaded("ffmpeg")) {
dl("ffmpeg.so") or die("errorLoadext<br />");
print "forcedLoadext<br />";
}
else print "validLoadext<br />";
if ($ffmpegFile = new ffmpeg_movie("/home/wsite/www/multimedia/actus/uploads/musique2078.mp3", false)){
$ffmpegDuration = $ffmpegFile->getDuration();
if ($ffmpegDuration != false) echo date("H:i:s", mktime(0, 0, $ffmpegDuration, 0, 0, 0));
else print("errorFunction<br />");
}
else print("errorModule<br />");
?>
J'obtiens en retour :
Code:
validLoadext
errorFunction
Ce qui signifie bien que le module est clairement identifié et chargé par PHP (validLoadext), et que la fonction getDuation retourne 0 (interprété comme false, d'où le print "errorFunction").
D'ailleurs, le module ffmpeg est bien présenté par la fonction phpinfos() de PHP avec les infos suivantes :
Code:
ffmpeg support (ffmpeg-php) enabled
ffmpeg-php version 0.5.1
libavcodec version Lavc51.40.4
libavformt version Lavf51.12.1
ffmpeg.allow_persistent : local = 0, master = 0
-------------------------
Je remercie d'avance celle ou celui qui pourra m'apporter son aide car je suis dans une impasse et je ne peut pas me permettre d'y rester. Nos utilisateurs du service ont besoin que ça fonctionne comme c'était le cas sur le précédent serveur.
MERCI ;-)