PHP : Upload de vidéo en web, conversion et lecture en streaming avec FFMPEG sur Debian 7 Wheezy
Sommaire
Envie de créer le nouveau Youtube !? Voici la procédure complète pour créer en PHP un site autonome d’upload de vidéos (tous formats acceptés), de conversion côté serveur et de lecture en streaming. L’article s’appuie sur un serveur dédié Debian 7 Wheezy.
Ce système est divisé en 3 parties :
- L’upload de la vidéo
- La conversion de la vidéo en MP4, ainsi que la création d’une miniature
- La lecture en streaming avec JWPlayer
Chacune de ces parties exige un peu de configuration serveur ainsi que l’appel à des librairies et extensions de PHP.
Cet article étant issu d’un long et fastidieux travail personnel, sachez que la partie concernant la conversion vidéo utilise la librairie PHP ezFFmpeg développée par Chistophe MICHAU.
Afin de mieux appréhender cet article, il est nécessaire d’avoir lu ces deux autres articles :
- Upload multiple de fichiers avec barre de progression
- Une fonction ajax simple, compatible et prête à l’emploi
J’utilise en effet dans cet articles des scripts (JS et PHP) détaillés dans mes travaux ci-dessus. Je ne reviendrais que très peu dessus.
Ce script étant assez allégé pour les besoins de l’article, il fonctionne sans base de données.
Prérequis
Vous aurez besoin de :
- Un serveur dédié Debian 7 Wheezy (un accès root est nécessaire, un hébergement mutualisé ne fera pas l’affaire)
- Apache2 & PHP5 installés et fonctionnels
- Beaucoup de patience !
Installation des modules
Nous entrons ici dans la partie configuration serveur, nécessaire avant la rédaction du script.
PHP-APC
L’extension PHP-APC permet d’accélérer la génération des pages PHP et offre aussi certaines fonctions permettant de connaître en temps réel l’occupation du cache PHP (ce cache est utilisé lors de l’upload de fichiers).
L’extension APC n’est pas présente par défaut dans PHP, il faut l’installer manuellement. Le Site Du Zéro propose une procédure d’installation pour Windows et Linux. Sous Debian, la commande suivante fait l’affaire :
apt-get install php-apc
Lorsqu’elle est installée, il faut activer l’ « upload progress » (RFC1867) en ajoutant ceci à votre fichier de configuration PHP :
; RFC1867 File Upload Progress hook handler apc.rfc1867=1 apc.rfc1867_prefix =upload_ apc.rfc1867_name=APC_UPLOAD_PROGRESS apc.rfc1867_freq=100k apc.rfc1867_ttl=3600
Il faut placer ces lignes après le paragraphe déjà dédié à APC. Sous Windows (php.ini), il ressemble à ceci :
[APC] apc.enabled = 1 apc.shm_segments = 1 apc.shm_size = 64M apc.max_file_size = 10M apc.stat = 1
FFMPEG et ses dépendances
FFMPEG est compilé et disponible sur les dépôts indépendants Deb Multimedia.
Malheureusement ces dépôts ne sont pas mis à jour régulièrement. Il est important de disposer des dernières version des codecs lors de l’installation d’FFMPEG sur le serveur, et pour cela, rien ne vaut une compilation à la main !
FFMPEG a besoin de certaines librairies pour reconnaître la plupart des formats vidéos. Nous installerons ces librairies avant de compiler FFMPEG.
Avant de compiler les librairies, il est indispensable d’installer les paquets suivants :
apt-get install build-essential fakeroot checkinstall git pkg-config yasm automake autoconf libtool
Libx264
Installez la librairie LIBX264 avec les commandes suivantes :
cd /tmp wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar -xjvf last_x264.tar.bz2
Rendez-vous dans le dossier (remplacez NUMEROVERSION par le numéro de la version de libx264).
cd x264-snapshot-NUMEROVERSION ./configure --enable-shared
Vous risquez de rencontrer une erreur YASM comme celle-ci :
Found yasm 1.1.0.2352 Minimum version is yasm-1.2.0 If you really want to compile without asm, configure with --disable-asm.
Dans ce cas, utilisez le paramètre –disable-asm :
./configure --enable-shared --disable-asm
Enfin, compilez la librairie avec make et make install (l’opération peut être assez longue) :
make make install
Il peut arriver que x264 est besoin du paquet libx264-dev lors de la compilation, c’est le cas de Debian 6.x. Sur Debian 7.x, la compilation fonctionne très bien sans.
Enfin, utilisez ldconfig pour mettre à jour les liens dynamiques, utiles au système pour retrouver les librairies :
ldconfig
Testez l’installation avec la commande x264 :
x264 --help
Vous devriez obtenir la documentation de x264.
Libfaac
Ayant rencontré une erreur avec le dépôt Sourceforge officiel de libfaac, j’utilise le dépôt GitHub d’Arcen.
Téléchargez et installez la librairie avec les commandes suivantes :
cd /tmp git clone git://github.com/Arcen/faac cd faac ./bootstrap ./configure make make install ldconfig
Testez l’installation avec la commande faac:
faac --help
Vous devriez obtenir la documentation de faac.
FFMPEG
Lorsque les librairies sont installées, vous pouvez attaquer FFMPEG :
cd /tmp git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg ./configure --enable-libx264 --enable-gpl --enable-nonfree --enable-shared --enable-libfaac
Vous risquez de rencontrer une deuxième fois l’erreur YASM :
Found yasm 1.1.0.2352
Minimum version is yasm-1.2.0
If you really want to compile without asm, configure with --disable-asm.
Comme pour la première fois, utilisez le paramètre –disable-asm :
./configure --enable-libx264 --enable-gpl --enable-nonfree --enable-shared --enable-libfaac --disable-asm
Finissez l’installation avec les commandes habituelles (la compilation de FFMPEG est très longue) :
make make install ldconfig
Si tout se passe bien, vous avez installé FFMPEG avec les principales librairies couramment utilisées. Votre serveur est capable de convertir la plupart des formats vidéos !
Testez l’installation avec la commande suivante :
ffmpeg -L
La liste des librairies installées doit apparaître, ainsi que la version de FFMPEG.
Une dernière chose, afin d’éviter certaines erreurs chronophages et difficiles à diagnostiquer, donnons les droits d’accès aux librairies et au répertoire du site (celui qui contient le dossier vids dans lequel seront stockées les vidéos). N’oubliez pas que c’est le compte www-data qui va exécuter les commandes FFMPEG.
chmod 755 -R /usr/bin/local/ffmpeg chmod 755 -R /usr/bin/local/faac chmod 755 -R /usr/bin/local/ffprobe chmod 755 -R /usr/bin/local/ffserver chmod 755 -R /usr/bin/local/x264 chmod 777 -R /var/www/VOTRESITE
Apache H264 Streaming Module
Ce module permet à Apache de pouvoir correctement streamer des fichier MP4 (H264). Un système de streaming bien configuré doit permettre le commencement de la lecture vidéo alors qu’elle n’est pas encore chargée entièrement. Le système doit aussi permettre le déplacement du curseur vers une zone de la vidéo qui n’est pas encore chargée.
Afin d’installer le module, nous utiliserons APache eXtenSion tool (APSX) :
apt-get install apache2-threaded-dev cd /tmp wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz tar -zxvf apache_mod_h264_streaming-2.2.7.tar.gz cd mod_h264_streaming-2.2.7 ./configure --with-apxs=`which apxs2` make make install
Lorsque le module est installé, ajoutez ces deux lignes au fichier de configuration d’Apache (/etc/apache2/apache2.conf) :
LoadModule h264_streaming_module /usr/lib/apache2/modules/mod_h264_streaming.so AddHandler h264-streaming.extensions .mp4
Enfin, redémarrez Apache :
service apache2 restart
Le script
Votre serveur est prêt. PHP-APC, FFMPEG, ses dépendances, et Apache x264 streaming module sont installés et fonctionnels. Nous allons passer à la deuxième partie de cet article : le script.
Le script est conçu avec les pages suivantes :
- ajax_apc_infos.php : Page appelée périodiquement en AJAX lors de l’upload, afin de mettre à jour la barre de progression.
- ezFFmpeg_1.1.inc.php : Librairie de traitement vidéo, présentée en début d’article.
- index.php : Formulaire d’upload.
- jwplayer.js & jwplayer.swf : Permet la lecture en streaming de vidéos MP4.
- traitement.php : Page de conversion d’une vidéo en MP4 et de création d’une miniature.
- video.php : Page de visualisation d’une vidéo.
- XHR.js : Fonctions JS d’AJAX.
L’intégralité des pages est commentés.
Démonstration
Vous pouvez télécharger le script via ce lien direct : TFRICHET.FR – Upload de video
Conclusion
Il ne vous reste plus qu’à régler un petit détail : trouver des vidéos dans différents formats pour tester. Et pour cela, Google va nous aider. Utilisez les recherches suivantes pour trouver des vidéos référencées involontairement par leurs propriétaires :
- Format avi
- Format 3gp
- Format flv
- Format mkv
- Format mov
- Format mp4
- Format mpeg
- Format mpg
- Format ogm
- Format webm
- Format wmv
- Format xvid
En cas de questions ou de difficultés, n’hésitez pas à commenter l’article.
Voici les corrections pour PHP 5.4 (et plus) lorsqu’APC n’est pas disponible : On peut utiliser le Session Upload Progress (http://php.net/manual/session.upload-progress.php) :
--- TFRICHET.FR-Upload-de-video/apc_fetch/index.php Sun Oct 20 01:55:27 2013
+++ TFRICHET.FR-Upload-de-video/session.upload_progress/index.php Fri Nov 01 12:50:34 2013
@@ -99,7 +99,7 @@
<form enctype="multipart/form-data" method="post" action="traitement.php" onsubmit="upload_maj_apc('');" target="iframe_upload" style='width:600px;'>
- <input type="hidden" id="APC_UPLOAD_PROGRESS" name="APC_UPLOAD_PROGRESS" value="" />
+ <input type="hidden" id="" name="" value="" />
Choisissez un fichier (500Mo max.)
--- TFRICHET.FR-Upload-de-video/apc_fetch/ajax_apc_infos.php Sun Oct 20 01:55:27 2013
+++ TFRICHET.FR-Upload-de-video/session.upload_progress/ajax_apc_infos.php Fri Nov 01 12:50:30 2013
@@ -8,9 +8,10 @@
if(isset($_POST['id_upload']))
{
// on récupère les infos du fichiers (pour les retourner dans les inputs)
- $apc = apc_fetch('upload_'.$_POST['id_upload']);
- $total = $apc['total'];
- $current = $apc['current'];
+ $sessionUploadKey = ini_get('session.upload_progress.prefix') . $_POST[ini_get('session.upload_progress.name')]
+ $uploadInfos = $_SESSION[$sessionUploadKey];
+ $total = $uploadInfos['content_length'];
+ $current = $uploadInfos['bytes_processed'];
}
else
{
--- TFRICHET.FR-Upload-de-video/apc_fetch/traitement.php Sun Oct 20 01:55:27 2013
+++ TFRICHET.FR-Upload-de-video/session.upload_progress/traitement.php Fri Nov 01 12:50:38 2013
@@ -14,9 +14,9 @@
include("ezffmpeg_1.1.inc.php");
// si un fichier est transmis
-if(isset($_POST['APC_UPLOAD_PROGRESS']))
+if(isset($_POST[ini_get('session.upload_progress.name')]))
{
- $id_upload = $_POST['APC_UPLOAD_PROGRESS'];
+ $id_upload = $_POST[ini_get('session.upload_progress.name')];
$fichier_infos = $_FILES['fichier'];
// test de l'extension de fichier, parmis les extensions autorisées
Bonjour,
Merci et bravo pour ce tuto qui m’intéresse au plus haut point cependant :
J’utilise un serveur virtuel 1&1 sous plesk centOS 6.5.
J’ai vraiment envie de retrouver la fonction ffmpeg que j’utilisais sur mon mutualisé américain (mais qui ramait)
J’ai trouvé une procédure « ffmpeg installer » que j’ai lancé sans autre forme de réflexion et j’ai planté complétement mon serveur. J’ai du le réinitialiser !!
Je suis donc maintenant très méfiant et mes connaissances sont très limités dans ce genre d’installation.
Ma question : cette procédure est elle compatible et envisageable sur mon petit virtuel sans risquer de faire le crasher ?
Merci d’avance pour votre réponse.
Paul
Bonjour,
La quasi totalité de mon article est compatible avec toutes les distribs Linux (au moins pour l’installation d’ffmpeg), mais certaines commandes sont spécifiques à Debian.
Sous CentOS, ça devrait passer. Je suis intéressé par un retour de votre part à ce sujet !
L’avantage est qu’ici, l’installation d’ffmpeg se fait à la main, en compilant depuis les sources. Il n’y a pas de surcouche (qui est je pense la cause de vos problèmes).
A propos du virtualisé, l’installation comme l’utilisation d’ffmpeg se limite aux ressources disponibles. Cela devrait bien se dérouler, même sur une petit virtualisé. L’important est que vous possédiez les droits root sur votre serveur.
Si votre serveur est en production et que vous n’êtes pas 100% opérationnel, pourquoi ne pas tenter l’expérience sur une machine virtuelle en local ?
Thibaud.
Bonjour, je me suis lancé, dès la première étape de l’installation de l’APC, j’ai une erreur. J’ai remplacé apt get par yum, mais « nothing to do » !
J’ai continué et installé X264 sans problème, puis tenté d’installé LFAAC.
Bien qu’il me dise que l’installation a réussi, j’ai ceci a la fin de la séquence :
make[2]: Nothing to be done for `install-data-am’.
make[2]: Leaving directory `/tmp/faac/libfaac’
make[1]: Leaving directory `/tmp/faac/libfaac’
Making install in common
make[1]: Entering directory `/tmp/faac/common’
Making install in mp4v2
make[2]: Entering directory `/tmp/faac/common/mp4v2′
source=’3gp.cpp’ object=’3gp.o’ libtool=no \
DEPDIR=.deps depmode=none /bin/sh ../../depcomp \
g++ -DHAVE_CONFIG_H -I. -I../.. -I../../include -Wall -c -o 3gp.o 3gp.cpp
../../depcomp: line 611: exec: g++: not found
make[2]: *** [3gp.o] Error 127
make[2]: Leaving directory `/tmp/faac/common/mp4v2′
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/tmp/faac/common’
make: *** [install-recursive] Error 1
[root@sxxxxxxxxx faac]# ldconfig
et lors du test :
[root@xxxxxxx faac]# faac–help
-bash: faac–help: command not found
Voilà ou j’en suis pour le moment, je me suis arrêté là en attendant un éventuel commentaire sur ces premières étapes.
Cordialement
Paul
Bonjour Paul,
L’erreur se produit lors du make de libfaac ?
Avez-vous installé les tous les paquets suivants avec yum :
build-essential fakeroot checkinstall git pkg-config yasm automake autoconf libtool
Oui, lors du make, beaucoup de chose se passe et semble bien se passer même. Jusqu’à cette erreur.
J’ai réessayé d’installer php-apc sans succès.
Pour les paquets, oui, j’ai fais : yum build-essential fakeroot checkinstall git pkg-config yasm automake autoconf libtool !
Je voudrais pas polluer votre blog avec mes soucis de débutants.
Bonne journée
Vous ne polluez pas mon blog, bien au contraire. Tout commentaire est bon à prendre et pourra peut être aider quelqu’un d’autre.
Pour l’installation de FFMPEG seul, PHP-APC n’est pas obligatoire.
Sur CentOS et dérivés, j’ai l’impression que YUM propose certains paquets multimédia à l’inverse de Debian.
Je suis tombé sur cette page : http://doc.fedora-fr.org/wiki/Lecture_de_fichiers_multim%C3%A9dia#FAAC
Il y est détaillé l’installation de faac via le paquet faac-devel, et même la recompilcation d’FFMPEG.
Avez-vous essayé ces manipulations ?
(Je dois installer ffmpeg et flvtool2 pour pouvoir utiliser les outils d’upload de vidéos de jomsocial en fait)
Non je n’ai pas essayé, trop peur de rejouer le mauvais film d’il y a 8 jours (réinitialisation du serveur suite à plantage)
En feuilletant la documentation, je me demandais si la création d’un environnement de construction : http://doc.fedora-fr.org/wiki/RPM_:_environnement_de_construction ne serait pas nécessaire pour mon cas ? pour éviter de planter le serveur.
Sinon pour faac-devel j’ai trouvé ceci : http://pkgs.org/centos-6/atrpms-x86_64/faac-devel-1.28-6.el6.x86_64.rpm.html (en sachant que je suis sous centOS6.5)
Je pense que la deuxième solution est la meilleure (même si l’environnement de construction reste une bonne idée).
L’installation du paquet ne plantera pas le système, je pense.
Bon courage !
Voilà, j’ai installé faac-devel, mais la commande faac –help ne donne rien. Je me suis dit que c’était peut être normal, j’ai donc continué.
J’ai vérifié ma que x264 était bien installé x264 –help et vérifié que les fichiers sont bien a leur place usr/local/bin puis j’ai lancé la procédure pour ffmpeg avec votre méthode : ./configure –enable-libx264 –enable-gpl –enable-nonfree –enable-shared –enable-libfaac –disable-asm
mais j’ai ceci : ERROR: libx264 not found !
Faut il continué avec make ?
J’ai réussi a tout installer grâce a vous et a ce site : http://pkgs.org/ me reste plus qu’a faire fonctionner tout ça avec les bons codecs.
Merci beaucoup
Bonsoir,
Je suis ravi pour vous. Très bonne trouvaille votre site !
N’hésitez pas à me tenir au courant du fonctionnement de votre projet.
Tout est installé, mais aucun type de vidéo n’est pris en charge selon mon script (jomsocial). Pourtant mes chemins sont bons vers ffmpeg (usr/bin/ffmpeg).
Est ce que c’est possible que ffmpeg ne trouve pas le chemin vers libx264.so.136 qui se trouve dans /usr/lib64/ ?
C’est bizarre !
Que renvoi la commande ffmpeg -L ?
Avez vous utilisé la commande ldconfig entre l’installation de x264 et d’ffmpeg ?
Salut
très bon tuto , mais il y a juste une petite erreur de frappe :
Pour l’installation de ffmpeg tu as ecrit :
cd ffmepg
mais c’est plutot : cd ffmpeg
Je dois avouer que je suis rester plusieurs minutes avant de comprendre ^^
Bonjour. C’est corrigé, merci !
Il y a aussi le faac–help où il manque un espace -> faac –help
PS : Vu que t’y connais pas mal , je te propose de pousser un peu plus loin se magnifique tuto , en reprenant exactement le même principe que le service de vod de jwplayer , car j’ai beaucoup cherché sur internet et il y a aucun tuto pour faire la même chose :
– Une page d’upload
– Une barre de progression
– La conversion des vidéos en 180 , 360 , 720 et 1080p
– La création d’un fichier .vtt , pour les prévisualisations des images
– Le tout dans un fichier .rss , pour que le player puisse le lire
exemple sur mon site :
Le résultat final : http://www.watchthegame.fr/test-video
Le code source de la page : view-source:http://www.watchthegame.fr/test-video
Le fichier .rss : http://www.watchthegame.fr/rss/test.rss
C’est corrigé, une fois de plus ! Merci de ton attention.
Je ne connaissais pas ce principe. C’est pas mal ! Et cela permet la sélection de la résolution pendant la lecture…
Mon script se contente de convertir la vidéo en un seul format et il ne crée qu’une seule miniature. Mais il peut être modifié pour convertir la vidéo plusieurs fois dans plusieurs résolutions différentes et créer le fichier rss à destination de jwplayer !
Par contre, que contient le fichier .vtt ? Un fichier image ne suffit pas ?
Sinon, très bon choix le Rewind !!
Le fichier .vtt contient :
00:00.000 –> 00:03.137
MCoq5nyM-120.jpg#xywh=0,0,120,67
00:03.137 –> 00:06.274
MCoq5nyM-120.jpg#xywh=120,0,120,67
00:06.274 –> 00:09.411
MCoq5nyM-120.jpg#xywh=240,0,120,67
quand je met le fichier .vtt sur mon serveur , l’image n’est pas générée donc ça doit etre leur serveur qui genere une image lorsque l’on passe la souris sur le curseur
Un sujet intéressant a ce propos : http://www.realeyes.com/blog/2013/10/22/cross-browser-closed-captioning-with-webvtt-and-captionator/
Bonjour,
Me revoilà, tout est a priori bien installé, lorsque je requête les librairies et les codecs, ils apparaissent bien (plus qu’il ne m’en faut).
Cependant lorsque je lance un transfert de vidéo via jomsocial, je me retrouve face a une erreur 500 avec une surcharge du serveur anormale. La vidéo originale est bien uploadée mais pas convertie !
J’opterais pour un problème de chemins. Mes composants ffmpeg et flvtool2 sont dans usr/bin (chemins que j’ai renseigné dans l’admin jomsocial) et le x264 est dans usr/local/bin. Est ce normal ?
Bonjour,
Que se passe t-il pendant que le serveur est surchargé ? FFMPEG travaille ?
Si FFMPEG travaille et charge le processeur, c’est très bon signe !
Je ne connais pas votre script PHP, mais vous pouvez le modifier pour afficher la sortie d’FFMPEG ou au moins la mettre dans un fichier ?
Cela vous indiquera l’erreur et vous pourrez chercher en conséquence.
Thibaud.
En fait lorsque je lance la tache cron ou lorsqu’elle se lance automatiquement j’ai un crash du genre :
Can’t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug [1135] An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
et
Error displaying the error page: Application Instantiation Error: Could not connect to MySQL.
et dans les logs j’ai ça :
mod_fcgid: read data timeout in 75 seconds
Premature end of script headers: index.php
Les informations sur les vidéos ne peuvent pas s’écrire dans la base de données ?
Il s’agit d’une erreur rencontrée par PHP & MySQL, je ne connais pas votre applicatif et je ne peux pas vous aider à ce propos.
Essayez d’identifier dans le code la commande FFMPEG que votre applicatif PHP utilise et alncez la à la main. Si FFMPEG ne fonctionne pas, vous aurez l’erreur sous les yeux ! Mais je ne suis pas sur que nous soyons face à une erreur d’FFMPEG !
Merci pour ces précisions.
Je pesne que j’ai du oublié des trucs. Ne faut il pas installer ffmpeg-php ?
Lorsque je lance mon phpinfo, ffmpeg n’y figure pas, faut il faire des déclarations dans php.ini ? ou dans un fichier .conf ?
Je n’utilise pas de paquet PHP pour interagir avec FFMPEG. J’utilise la commande system() en dur.
De cette manière il n’est pas nécessaire de configurer PHP, il faut en revanche se servir des lignes de commandes complètes d’FFMPEG.
Je ne connais pas le CMS que vous utilisez. N’existe t-il pas une documentation ?
Ok, j’avance, j’ai un message d’erreur et plus de crash c’est déjà pas mal. J’ai augmenté la valeur memory limit et depuis j’ai ce message :
FFmpeg could not convert videos /usr/bin/ffmpeg -y -i /var/www/vhosts(…)
ffmpeg, mencoder, faac les librairies j’ai tout interrogé tout est en place. J’ai modifié les droits de mes dossiers de destinations ou en 755 ou en 777 mais rien.
Je vais finir par y arriver.
Bonjour,
Tous d’abord merci pour le script, gj, par contre en local, ça ne marche pas, je n’ai pas la barre de progression etc…
Que donne un phpinfo() au niveau d’APC ?
Les lignes concernant la rfc1867 sont-elles présentent ?
http://picsdb.net/data/538afc5ca42c1.png
Merci pour la réponse. Mais malheureusement je n’ai pas du tout d’APC dans mon phpinfo(); je ne sais pas pourquoi d’ailleurs
Bonjour,
Pour ma part j’ai du désinstaller le paquet libx264-dev et ensuite tout s’est installé correctement. Attention petite coquille, vous indiquez :
./configure –enable-share –disable-asm
Mais il faut en fait lire :
./configure –enable-shared –disable-asm
Par contre une fois terminé, impossible d’encoder la moindre vidéo.
L’upload se passe correctement, la barre arrive a 50% puis je vois une roue crantée et le message » Upload terminé, traitement de la vidéo en cours… « , cependant aucun process ne tourne (‘ps aux | grep ff’ ne renvoi rien) et le dédié ne tourne pas.
J’ai jeté un oeil a votre script mais mes talent de devellopeurs sont bien loins des votre. Y aurait il un moyen d’activer un mode « debug » ? Je pense qu’il sagit simplement d’une histoire de permission (j’ai pourtant tout mis en 755).
D’avance merci pour vos conseils,
Guillaume T.
Bonjour,
Effectivement, parfois l’installation de libx264-dev pose plus de problème qu’elle n’en résout. Je vais modifier l’article.
Concernant votre problème, mon script est très sommaire et ne possède pas de mode debug.
Procédons pas à pas :
ffmpeg -L
sur le serveur ?Cordialement, Thibaud.
ReBonjour !
Apres analyse du error.log d’Apache j’ai pu identifier le problème.
Il semble que ma version de PHP ne tolere pas l’utilisation de la fonction ini_set();, ignorant donc les variables definissant la taille maxi (max_filesize etc..).
Après avoir modifié les variables en dur dans le php.ini tout fonctionne a merveille.
Merci enormement pour ce tuto clair et précis ainsi que pour le script redoutablement efficace. 🙂
Bonjour.
J’essaie de faire marcher vos différents scripts. Vous devriez ajouter dans votre tuto qu’il faut modifier le max_post_size autrement au dela de 8MB, ça ne marche pas.
Aussi, j’ai un soucis avec votre code dans le fichier traitement.php
je n’arrive jamais à passer l’erreur type mime. La ligne suivante doit poser soucis:
$mimetype_video = explode(‘/’, system(« file -bi \ » ».$fichier_infos[‘tmp_name’]. »\ » »));
J’ai une error file not found quand j’enlève ob_start(); et ob_stop(); pour debugger.
je n’arrive pas à comprendre d’où ça vient.
le message est: erreur :ERROR: cannot open `’ (No such file or directory
Bonjour.
Effectivement, il faut modifier le max_post_size() dans le php.ini.
Pour votre erreur, avez-vous appliqué un chmod 777 à /var/www et à /tmp (le chmod 777 pour essayer, et 755 en production.) ?
Cordialement, Thibaud
Salut,
Pour ffmpeg il existe une biblio ffmpeg-php
qii permet d utiliser un objet php et non de faire des execs
cependant je cherche un moyen de securise le nom et chemin video lors de la lecture
(tutos payants)
je vois pas comment faire
et limiter le cache car la il dl tout
dans un meme fichier
alors que je souhaiterai qu il lise disons 30Mo dans un fichier puis qu il ecrase avec les 30Mo suivant et ainsi de suite
merci a plus
j’ai l’erreur, erreur :mymetype
de meme pour moi