Dev </>Sysadmin

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 :

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

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 :

En cas de questions ou de difficultés, n’hésitez pas à commenter l’article.

38 réflexions sur “PHP : Upload de vidéo en web, conversion et lecture en streaming avec FFMPEG sur Debian 7 Wheezy

  • 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

    Répondre
  • 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

    Répondre
  • 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.

    Répondre
  • 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

    Répondre
  • 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

    Répondre
  • 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

    Répondre
  • 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 ?

    Répondre
  • (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)

    Répondre
  • 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 !

    Répondre
  • 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 ?

    Répondre
  • 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

    Répondre
  • 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.

    Répondre
  • 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/ ?

    Répondre
  • C’est bizarre !
    Que renvoi la commande ffmpeg -L ?
    Avez vous utilisé la commande ldconfig entre l’installation de x264 et d’ffmpeg ?

    Répondre
  • 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 ^^

    Répondre
      • 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

        Répondre
        • 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 !!

          Répondre
  • 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 ?

    Répondre
    • 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.

      Répondre
      • 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 ?

        Répondre
        • 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 !

          Répondre
          • 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.

    Répondre
  • 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…

    Répondre
  • 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.

    Répondre
    • 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 :

      • Le chmod 755 est-il appliqué aux dossiers d’FFMPEG et au répertoire de votre site ?
      • Le proriétaire du répertoire de votre site est-il bien « www-data » (utilisateur linux d’apache2), ? Au pire, faites un chmod 777 sur le répertoire de votre site, pour tester.
      • Que retourne la commande suivante ffmpeg -L sur le serveur ?

      Cordialement, Thibaud.

      Répondre
      • 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. 🙂

        Répondre
  • franciscow

    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.

    Répondre
    • franciscow

      le message est: erreur :ERROR: cannot open `’ (No such file or directory

      Répondre
    • 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

      Répondre
  • 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

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Êtes-vous humain ? *