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

  • Auteur de la discussion Auteur de la discussion wriliker
  • Date de début Date de début
Nouveau WRInaute
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:
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 ;-)
 
Nouveau WRInaute
A propos de glibc detected

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
 
WRInaute impliqué
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 ?
 
Discussions similaires
Haut