(étrange) problème avec FFMPEG-PHP 0.5.1 !

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

wriliker
Nouveau WRInaute
 
Messages: 1
Inscription: Jeu Mar 13, 2008 10:48

(étrange) problème avec FFMPEG-PHP 0.5.1 !

Message le Jeu Mar 13, 2008 11:10

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' :

Code: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
/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: Tout sélectionner
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: Tout sélectionner
Error in argument 1, char 2: option not found r


et

Code: Tout sélectionner
*** 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: Tout sélectionner
<?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: Tout sélectionner
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: Tout sélectionner
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 ;-)

pmenier
Nouveau WRInaute
 
Messages: 1
Inscription: Mer Nov 05, 2008 9:46

A propos de glibc detected

Message le Mer Nov 05, 2008 9:54

Bonjour,

Je ne suis pas sûr que cela puisse t'aider mais à une époque j'avais eu pas mal de soucis avec cette erreur glibc detected sur php5 que je compilais moi-même...
Il s'agissait en fait d'une erreur de ma part lors de la configuration de php car je passais entre autres dans la ligne de config : ./configure ..... --with-snmp=shared,/usr --with-mm .... . Le --with-mm me plantait systématiquement le chargement de l'extension snmp et je n'avais d'autre recours que de la compiler en dur.

Idem pour les extensions mcrypt et pgsql.

Ca peut être une piste....

Patrick


carrel
WRInaute accro
WRInaute accro
 
Messages: 2762
Inscription: Mer Oct 18, 2006 15:13

Message le Mer Nov 05, 2008 10:14

C'est surement pas ça mais je testerai quand même le set env global.

Bonne chance.


f_trt
WRInaute passionné
WRInaute passionné
 
Messages: 781
Inscription: Sam Sep 17, 2005 22:36

Message le Mer Nov 05, 2008 14:19

Je n'ai jamais utilisé mais sur quoi il fait les tests ? ne serait-ce pas la vidéo sur laquelle il fait les tests qui serait foireuse en simplement faite avec un codex inconnu ?


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités