Installation de FFmpeg et FFmpeg-php

Bonjour,

J’essaye de mettre en place le script photoshow (http://www.photoshow-gallery.com/) pour lequel il est nécessaire d’avoir installé sur le serveur ffmpeg.
Après quelques recherches et modifications de sources.list j’ai réussi à installer ffmpeg et maintenant j’en suis à la partie ffmpeg-php.
je suis ce tuto: http://www.mysql-apache-php.com/ffmpeg-install.htm chapitre ffmpeg-php
J’ai pu récupérer le package et là je tente de le compiler et l’installer. Sauf que pour cela il me faut ffmpeg-devel sinon mon ./configure me renvoie une erreur identifiée comme étant due à l’absence de ffmpeg-devel. Or je n’arrive pas à trouver comment installer ce package.
Quelqu’un peut-il me mettre sur la bonne voie svp ?

Salut

A priori ça : libavcodec-dev
https://packages.debian.org/jessie/libavcodec-dev

mais d’après https://geekwentfreak-raviteja.rhcloud.com/blog/2014/05/07/install-ffmpegavconv-dev-packages-in-ubuntu/

In Debian and its derivatives, the dev package for ffmpeg/avconv is split into several sub packages:

libavdevice-dev
libavformat-dev
libavfilter-dev
libavcodec-dev
libswscale-dev
libavutil-dev

Merci à toi grandtoubab, j’ai essayé d’installer ça mais visiblement j’ai un problème de paquets défectueux en mode “garder en l’état”. Impossible de corriger les dépendances. Le hic c’est que je ne sais plus du tout à quel moment s’est produit le problème. D’autant que lors d’upgrade je n’ai aucune erreur. Je vais essayer de fouiller pour trouver réponse à mon problème. J’espère juste que ce n’est pas lié réellement à ffmpeg sinon je vais bien galérer vu comment j’ai bien ramé déjà pour l’installer.

echo "deb http://www.deb-multimedia.org jessie main non-free" >> /etc/apt/sources.list && apt-get update && apt-get install php5-dev libavdevice-dev libavformat-dev libavfilter-dev libavcodec-dev libswscale-dev libavutil-dev

la seule question est deb-multimedia est-il fiable.

Merci dindoun, j’avais déjà ce magazin en liste, sans ça pas moyen de choper les composants nécessaires à l’install de ffmpeg. J’ai lancé quand même l’apt suivant:

[14/04/17-05:51]root @ serveur></># apt-get install php5-dev libavdevice-dev libavformat-dev libavfilter-dev libavcodec-dev libswscale-dev libavutil-dev
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
php5-dev est déjà la plus récente version disponible.
libavutil-dev est déjà la plus récente version disponible.
libswscale-dev est déjà la plus récente version disponible.
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l’impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n’ont pas encore
été créés ou ne sont pas sortis d’Incoming.
L’information suivante devrait vous aider à résoudre la situation :

Les paquets suivants contiennent des dépendances non satisfaites :
libavcodec-dev : Dépend: libmp3lame-dev mais ne sera pas installé
Dépend: libxvidcore-dev mais ne sera pas installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l’état ».

je vous colle ici le contenu de mon sources.list si ça peut aider

deb http://ftp.fr.debian.org/debian/ jessie main
deb-src http://ftp.fr.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

deb http://ftp.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.debian.org/debian/ jessie-updates main contrib

deb http://ftp.fr.debian.org/debian/ jessie-updates main
deb-src http://ftp.fr.debian.org/debian/ jessie-updates main

Sources Dotdeb ajoutées suite au tuto de www.papygeek.com sur l’installation d’un serveur web

deb http://packages.dotdeb.org/ jessie all
deb-src http://packages.dotdeb.org/ jessie all

#sources pour webmin
deb http://download.webmin.com/download/repository/ sarge contrib

#sources pour ffmpeg
deb http://www.deb-multimedia.org/ jessie main non-free
deb-src http://www.deb-multimedia.org/ jessie main non-free
deb http://httpredir.debian.org/debian jessie-backports main non-free
deb-src http://httpredir.debian.org/debian jessie-backports main non-free

Essayer

sudo dpkg --audit

pour faire le bilan des dégâts

et

sudo apt install libmp3lame-dev

pour savoir pourquoi il n’est pas instalable

J’ai lancé ce que tu me recommandes grandtoubab:

[15/04/17-12:15]root @ serveur># dpkg --audit
[15/04/17-12:15]root @ serveur># apt install libmp3lame-dev
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l’impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n’ont pas encore
été créés ou ne sont pas sortis d’Incoming.
L’information suivante devrait vous aider à résoudre la situation :

Les paquets suivants contiennent des dépendances non satisfaites :
libmp3lame-dev : Dépend: libmp3lame0 (= 1:3.99.5-dmo4) mais 1:3.99.5-dmo6 devra être installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l’état ».
[15/04/17-12:16]root @ serveur>#

Mais en vain :frowning:

libmp3lame-dev : Dépend: libmp3lame0 (= 1:3.99.5-dmo4) mais 1:3.99.5-dmo6 devra être installé

c’est un conflit entre les versions debian et les versions du deb-multimedia, comme souvent d’ailleurs …

les versions sur Debian

 apt list libmp3lame0 -a

En train de lister... Fait
libmp3lame0/testing,now 3.99.5+repack1-9+b2 amd64  [installé]
libmp3lame0/stable 3.99.5+repack1-7+deb8u1 amd64

Personellement je considère que ce deb-multimedia est plus la source de problemes que de solutions :grinning:

Voici ce que j’ai de mon coté avec un apt list:

[15/04/17-14:54]root @ serveur># apt list libmp3lame0 -a
En train de lister… Fait
libmp3lame0/now 1:3.99.5-dmo6 amd64 [installé, local]
libmp3lame0/stable 1:3.99.5-dmo4 amd64
libmp3lame0/stable 3.99.5+repack1-7+deb8u1 amd64

Faut-il que je vire deb-multimedia de mon source pour régler le problème ? Sachant quand même que je cherche à finir l’install de ffmpeg-php. Le but pour moi est de faire tourner ce script php photoshow avec les vidéos.

peut être forcer l’utilisation des paquets Debian
l
sudo apt-get install --reinstall libmp3lame0/stable

A priori j’ai tous les -dev ci-précédemment cités. Et je n’arrive toujours pas à compiler ffmpeg-php à partir de la version ffmpeg-php-0.6.0 :-s

[18/04/17-00:20]root @ serveur<~/ffmpeg-php-0.6.0># phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[18/04/17-00:21]root @ serveur<~/ffmpeg-php-0.6.0># ./configure
checking for grep that handles long lines and -e… /bin/grep
checking for egrep… /bin/grep -E
checking for a sed that does not truncate output… /bin/sed
checking for cc… cc
checking whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether cc accepts -g… yes
checking for cc option to accept ISO C89… none needed
checking how to run the C preprocessor… cc -E
checking for icc… no
checking for suncc… no
checking whether cc understands -c and -o together… yes
checking for system library directory… lib
checking if compiler supports -R… no
checking if compiler supports -Wl,-rpath,… yes
checking build system type… x86_64-unknown-linux-gnu
checking host system type… x86_64-unknown-linux-gnu
checking target system type… x86_64-unknown-linux-gnu
checking for PHP prefix… /usr
checking for PHP includes… -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib
checking for PHP extension directory… /usr/lib/php5/20131226
checking for PHP installed headers prefix… /usr/include/php5
checking if debug is enabled… no
checking if zts is enabled… no
checking for re2c… no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk… gawk
checking for ffmpeg support… yes, shared
checking whether to force gd support in ffmpeg-php… no
checking for ffmpeg headers… …found in /usr/include/libavcodec
checking for ffmpeg libavcodec.so
configure: error: ffmpeg shared libraries not found. Make sure ffmpeg is compiled as shared libraries using the --enable-shared option

J’avoue que là je suis un peu perdu…

si ca peut t’aider :

j’utilise ffmpeg dans des scripts alors je l’ai installé par deb-multimedia mais je l’ai ensuite enlevé du sources.list

as -tu fait ca :
Make sure ffmpeg is compiled as shared libraries using the --enable-shared option, c’est-à-dire as tu utilisé l’option --enable-shared lors de la compilation de ton ffmpeg?

Salut dindoun,
merci d’essayer de m’aider. Je n’ais pas pu aller plus loing que configure et donc pas encore compilé. Le message d’erreur me renvoie bien cette erreur là mais j’ai même testé en faisant un ./configure --enable-shared et ça me renvoie exactement la même chose… D’où mon désarroi. :-s

ffmpeg shared libraries not found

visiblement il ne trouve pas ffmpeg.
As tu vraiment installé tous les paquets indiqués plus haut
In Debian and its derivatives, the dev package for ffmpeg/avconv is split into several sub packages:

libavdevice-dev
libavformat-dev
libavfilter-dev
libavcodec-dev
libswscale-dev
libavutil-dev

Oui, et je viens de revérifier en faisant un apt-get de toute cette liste et à chaque fois j’ai le message comme quoi j’ai déjà la plus récente version disponible… J’y pige plus rien.

Il est probable que le paquet ffmpeg que j’ai téléchargé sur deb-multimédia n’ait pas été lui compilé avec --enable-shared. Mais là pour le coup je ne sais pas comment le vérifier…

oui bein la c’est moi qui ne comprends plus :worried:
pourquoi tu veux mettre deux ffmpeg??
puisqu’il est dit que

In Debian and its derivatives, the dev package for ffmpeg/avconv is split into several sub packages:

libavdevice-dev
libavformat-dev
libavfilter-dev
libavcodec-dev
libswscale-dev
libavutil-dev

pourquoi mettre celui de ce depot non officiel?

Ce n’est pas un second ffmpeg que je veux mettre mais ffmepg-php que je n’arrive pas à installer. Et c’est pour celui là que j’ai ces messages d’erreur. Là j’essaye de recompiler ffmpeg 2.7.2 depuis les sources avec --enable-shared pour voir si après il m’est possible d’installer ffmpeg-php 0.6.0 comme je le souhaite. Jusqu’ici ffmpeg ne m’a pas posé de problèmes en particulier, c’est surtout le module php qui m’en pose…

Bon, après avoir réinstallé ffmpeg après l’avoir recompilé avec --enable-shared, là j’arrive à aller plus loin que le ./configure. Par contre, niveau make j’ai pas mal d’erreurs…

[24/04/17-19:42]root @ serveur># make
/bin/bash /root/ffmpeg-php-0.6.0/libtool --mode=compile cc -I. -I/root/ffmpeg-php-0.6.0 -DPHP_ATOM_INC -I/root/ffmpeg-php-0.6.0/include -I/root/ffmpeg-php-0.6.0/main -I/root/ffmpeg-php-0.6.0 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -I/usr/local/include/libavcodec/ -I/usr/local/include/libavformat/ -I/usr/local/include/libavutil/ -I/usr/local/include/libswscale/ -I/usr/local/include/libavfilter/ -I/usr/local/include/libavdevice/ -DHAVE_CONFIG_H -g -O2 -Wall -fno-strict-aliasing -c /root/ffmpeg-php-0.6.0/ffmpeg-php.c -o ffmpeg-php.lo
libtool: compile: cc -I. -I/root/ffmpeg-php-0.6.0 -DPHP_ATOM_INC -I/root/ffmpeg-php-0.6.0/include -I/root/ffmpeg-php-0.6.0/main -I/root/ffmpeg-php-0.6.0 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -I/usr/local/include/libavcodec/ -I/usr/local/include/libavformat/ -I/usr/local/include/libavutil/ -I/usr/local/include/libswscale/ -I/usr/local/include/libavfilter/ -I/usr/local/include/libavdevice/ -DHAVE_CONFIG_H -g -O2 -Wall -fno-strict-aliasing -c /root/ffmpeg-php-0.6.0/ffmpeg-php.c -fPIC -DPIC -o .libs/ffmpeg-php.o
In file included from /usr/include/x86_64-linux-gnu/sys/stat.h:105:0,
from /usr/include/php5/main/php_streams.h:28,
from /usr/include/php5/main/php.h:399,
from /root/ffmpeg-php-0.6.0/ffmpeg-php.c:40:
/usr/include/x86_64-linux-gnu/bits/stat.h:91:21: error: field ‘st_atim’ has incomplete type
struct timespec st_atim; /* Time of last access. /
^
/usr/include/x86_64-linux-gnu/bits/stat.h:92:21: error: field ‘st_mtim’ has incomplete type
struct timespec st_mtim; /
Time of last modification. /
^
/usr/include/x86_64-linux-gnu/bits/stat.h:93:21: error: field ‘st_ctim’ has incomplete type
struct timespec st_ctim; /
Time of last status change. /
^
/usr/include/x86_64-linux-gnu/bits/stat.h:152:21: error: field ‘st_atim’ has incomplete type
struct timespec st_atim; /
Time of last access. /
^
/usr/include/x86_64-linux-gnu/bits/stat.h:153:21: error: field ‘st_mtim’ has incomplete type
struct timespec st_mtim; /
Time of last modification. /
^
/usr/include/x86_64-linux-gnu/bits/stat.h:154:21: error: field ‘st_ctim’ has incomplete type
struct timespec st_ctim; /
Time of last status change. /
^
In file included from /usr/include/php5/main/php_streams.h:28:0,
from /usr/include/php5/main/php.h:399,
from /root/ffmpeg-php-0.6.0/ffmpeg-php.c:40:
/usr/include/x86_64-linux-gnu/sys/stat.h:365:31: error: array type has incomplete element type
const struct timespec __times[2],
^
/usr/include/x86_64-linux-gnu/sys/stat.h:372:54: error: array type has incomplete element type
extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
^
In file included from /usr/include/php5/main/php.h:405:0,
from /root/ffmpeg-php-0.6.0/ffmpeg-php.c:40:
/usr/include/php5/Zend/zend_virtual_cwd.h:220:2: error: unknown type name ‘time_t’
time_t expires;
^
/usr/include/php5/Zend/zend_virtual_cwd.h:248:86: error: unknown type name ‘time_t’
CWD_API realpath_cache_bucket
realpath_cache_lookup(const char *path, int path_len, time_t t TSRMLS_DC);
^
/root/ffmpeg-php-0.6.0/ffmpeg-php.c: In function ‘zm_startup_ffmpeg’:
/root/ffmpeg-php-0.6.0/ffmpeg-php.c:94:5: warning: implicit declaration of function ‘avcodec_init’ [-Wimplicit-function-declaration]
avcodec_init();
^
Makefile:181: recipe for target ‘ffmpeg-php.lo’ failed
make: *** [ffmpeg-php.lo] Error 1

pourquoi n’essais tu pas avec la version disponible dans Debian

https://packages.debian.org/fr/source/wheezy/ffmpeg-php