Convertir automatiquement des fichier via php

Bonjour à tous,

Dans le cadre de la création d’un forum, j’ai besoin de pouvoir convertir mes video (que les utilisateurs upload-erons) automatiquement en .flv .

Alors voilà, j’ai cherché un peu de mon coté et j’ai trouvé un petit logiciel “ffmpeg” qui me permet de convertir mes video parfaitement comme je le souhaite (j’ai testé le logiciel directement sur mon pc).

Seulement voilà, c’est un logiciel qui marche avec des commandes DOS… J’ai donc fais un .bat que j’execute via mon code PHP, mais je me suis rendu compte que mon .bat ne s’executait pas.

C’est peut etre dû au fait que dans mon .bat, je ne met aucun “CD …”. Tout simplement parce que je ne connais pas le repertoire racine, ni le nombre de dossier du serveur.
Ou alors dû qu fait que “ffmpeg” lance une commande “appuyez pour continuer…” et donc je ne peux pas déclencher cet éveénement.

Donc, deux questions :

1 - Peut-on connaitre le nombre de répertoire parent du serveur sur lequel on est hébergé ?

2 - Existe - t - il une commande (DOS ou autre) qui permet de faire “sauter” la pause du programme “ffmpeg” ?

Sinon, mon code PHP qui execute mon .bat (si mon probleme vient de là)=>

<?php
     exec("convert_toflv.bat");
?>

Et mon code dans le .bat (Qui permet d’executer “ffmpeg”) =>

ffmpeg -i video\3.avi -ar 22050 -ab 32 -f flv -s 400x300 video\3.flv

Voici le lien pour l’explication des -i, -ar…etc archaïques => www.siteduzero.com…

PS : J’espere que cette fois je ne me suis pas trompé de topic pour mon S.O.S. !!

J’aurai tendance à dire que lancer des commandes shell - surtout pour transcrire une video - c’est assez dangereux.
Et l’autre question c’est de savoir si le serveur qui exécute les commandes (souvent du Linux) a accès à une commande DOS ou tout simplement à ton utilitaire de conversion ?

Et pour le reste, pour ne pas te faire avoir : fr2.php.net…

Par pitié, utilise là ! :slight_smile:

Pour répondre à la question de manière plus précise

  1. serveur en face => pas du Windows ? oublie tes commandes, il te faut utiliser soit du Shell (bash ou autre) soit utiliser ffmpeg dans la version ad hoc (dépend du serveur). Par chance ffmpeg existe sous Linux. Par contre, si c’est un serveur mutualisé (ex: ovh, infomaniak), oublie l’idée de lancer ta commande.
  2. dossier courant ? osef, suffit de foutre un chemin complet et tu as pour cela la commande fr2.php.net… pour récupérer le dossier courant. Mais le chemin complet ça marche très bien sinon.
  3. cf le man linux.die.net… pour virer le “appuyer pour continuer…”

Bonjour, merci pour ta réponse qui m’est d’une grande aide :slight_smile: (je suis désolé d’avoir mis longtemps à répondre :s)

1

Le serveur qui heberge mon site (et donc mon FFmep) est bien un serveur Linux.
Donc c’est effectivement ça qui ne va pas, merci.

Cela dit, autant en commande DOS je tatonne, mais alors en commande Linux je n’y connais absolument rien … :s

Sur le tutorial où j’ai trouvé FFmep, il y a une indication pour l’installer sous Linux. Le probleme c’est que je n’ai pas Linux, donc je ne peux pas le télécharger ni meme l’installer… (pour ensuite le transférer chez mon hebegeur).

Une fois installer, il me faudrait un tuto de commande Linux qui explique comment executer un programme (ou executer directement FFmep).

2

Merci pour la commande Php, getcwd(), qui “donne” le dossier courant.

Je connais le dossier dans lequel je me situ, mais le probleme c’est que je n’ai pas le chemin complet, puisque je ne connais ni la racine, ni le nombre de dossier qui sépare le miens de cette racine :s
Pour que je puisse me positionner dans mon dossier.

3

Je n’ai pas trouvé d’autre solution pour executer FFmeg sans interface graphique.

En somme :
1.1 - Auriez vous un tuto expliquant comment, où, pourquoi, et à quel moment on utilise les commande Linux (sachant que je n’ai pas Linux chez moi… il est uniquement chez mon hebergeur)
1.2 - Si vous voulez me macher le travail, pour une fois je ne dis pas non :stuck_out_tongue: (joke)

2.1 - Existe - t -il une commande php ou autre pour connaitre le chemin complet d’un dossier ? (pour pouvoir me positionner dedans grâce à des commandes DOS ou Linux).

3.1 - Quelle sont les autres moyen d’utiliser un programme sans interfaces graphique ?
3.2 - Si il existe d’autres solutions pour convertir ses videos, je suis preneur :smiley: (mais je cherche de mon coté ^^ comme le reste :p)

PS : Merci beaucoup pour ta commande php escapeshellarg() qui est effectivement très utile pour ne pas avoir de mauvaises surprise ^^

1.1. Tu utilises la commande Linux de la même façon que sous Windows, seul le binaire et le format des chemins (/ au lieu de ) changent.
1.2. Nope, je n’ai pas la ffmpeg

2.1. getcwd() = get current working directory. Tu peux appeler realpath() par derrière si ça ne renvoie pas un chemin absolu.

3.1. Pas beaucoup d’autres, tu n’as peut être pas le choix. Le truc c’est que PHP (en mode web) n’est peut être pas adapté. Le temps que ta compression se fasse, l’utilisateur attendra … et ça pourrira ton serveur en bouffant une ou plusieurs connexions pour compresser une video.

3.2. Tu peux tenter des tâches cron et convertir tes vidéos en dehors d’un contexte web (ie: l’utilisateur ne fait que pousser sa vidéo non compressée, elle l’est après). Cela évite au moins de bloquer Apache. Mais là, il te faut un serveur dédié (et même dans le cas 3.1, ça passe mal en mutualisé…)

Merci infiniment pour tes réponses.

Vraiment excellentes ces commandes, merci beaucoup.

C’est vrai que je ne m’étais pas posé la question du multi-usage… tu as une fois de plus raison :smiley:

Donc je pense que je vais faire télécharger le logiciel de conversion à ceux qui veulent uploader des videos. Ca me parait plus simple et moins onéreux niveau bande-passante :slight_smile:

Pour ma part, ce sujet est maintenant résolut :slight_smile:
Je te remercie vraiment pour toutes ces informations que tu m’as donné, ça m’a été très instructif :slight_smile: