[JAVA] Processus et exécution
Enzyme59
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je travaille actuellement sur un petit programme web (en Java Servlet et sur Apache Tomcat) destiné à convertir des vidéos.
L'utilisateur est au début sur un formulaire HTML qui lui demande le chemin d'accès au fichier à convertir, ainsi que le(s) format(s) désiré(s).
N'étant pas un expert en codecs, je me contente de créer un nouveau processus en exécutant le moteur de conversion bien connu ffmpeg, au moyen d'une ligne du type :
Process proc = Runtime.getRuntime().exec("ffmpeg -i "+input+" -f "+format+" "+output);
...par exemple. (je schématise)
Mon principal souci est que le traitement de la vidéo ne démarre pas si je ne lance pas un System.exit(0), ce qui a pour effet de fermer Tomcat, et m'empêche de rediriger l'utilisateur vers une autre page. De plus, ce programme ayant pour objectif final d'être mis en ligne, je me vois mal fermer le serveur web pour chaque utilisateur ! Aussi, j'aimerais savoir si quelqu'un ici aurait une solution pour que le processus de ffmpeg s'exécute correctement tout en évitant de fermer la JVM (et donc Tomcat). J'ai cherché sur la Javadoc et un peu partout sur le web, sans résultat.
Deuxième problème : si je lance plusieurs processus consécutifs, ffmpeg plante, et seul le premier s'exécute. Je pensais au départ que c'était une cause supplémentaire de mon premier problème, mais en vérité, si j'exécute une seule ligne de commande comme la suivante :
ffmpeg -i blabla.avi -f flv blabla.flv -f ipod blabla.mp4
...par exemple (toujours), que ce soit dans mon programme ou directement dans la console, le bug se produit à l'identique (dans mon cas, il déclenche le "débogueur" de Visual Studio). Manque de mémoire ? SI quelqu'un avait une idée pour ça aussi...
En attente de vos réponses, je vous remercie d'ores et déjà de m'avoir lu. Cordialement,
Enzyme59
je travaille actuellement sur un petit programme web (en Java Servlet et sur Apache Tomcat) destiné à convertir des vidéos.
L'utilisateur est au début sur un formulaire HTML qui lui demande le chemin d'accès au fichier à convertir, ainsi que le(s) format(s) désiré(s).
N'étant pas un expert en codecs, je me contente de créer un nouveau processus en exécutant le moteur de conversion bien connu ffmpeg, au moyen d'une ligne du type :
Process proc = Runtime.getRuntime().exec("ffmpeg -i "+input+" -f "+format+" "+output);
...par exemple. (je schématise)
Mon principal souci est que le traitement de la vidéo ne démarre pas si je ne lance pas un System.exit(0), ce qui a pour effet de fermer Tomcat, et m'empêche de rediriger l'utilisateur vers une autre page. De plus, ce programme ayant pour objectif final d'être mis en ligne, je me vois mal fermer le serveur web pour chaque utilisateur ! Aussi, j'aimerais savoir si quelqu'un ici aurait une solution pour que le processus de ffmpeg s'exécute correctement tout en évitant de fermer la JVM (et donc Tomcat). J'ai cherché sur la Javadoc et un peu partout sur le web, sans résultat.
Deuxième problème : si je lance plusieurs processus consécutifs, ffmpeg plante, et seul le premier s'exécute. Je pensais au départ que c'était une cause supplémentaire de mon premier problème, mais en vérité, si j'exécute une seule ligne de commande comme la suivante :
ffmpeg -i blabla.avi -f flv blabla.flv -f ipod blabla.mp4
...par exemple (toujours), que ce soit dans mon programme ou directement dans la console, le bug se produit à l'identique (dans mon cas, il déclenche le "débogueur" de Visual Studio). Manque de mémoire ? SI quelqu'un avait une idée pour ça aussi...
En attente de vos réponses, je vous remercie d'ores et déjà de m'avoir lu. Cordialement,
Enzyme59
A voir également:
- [JAVA] Processus et exécution
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
7 réponses
Un petit up pour préciser que la conversion multiple fonctionne en réalité très bien, comme un idiot j'essayais à chaque fois avec le format iPod, et c'est ce dernier qui provoque un bug...
Pourquoi n'utilises-tu pas la classe Thread ? Ca permettrait de lancer ta conversion dans un autre processus.
Hum, ça ne m'a pas l'air d'une mauvaise idée, mais je ne visualise pas très bien comment faire... créer une classe héritant de Thread et mettre dans le run() mon Process proc = ... ?
Je viens de le faire, et le souci reste le même. Peut-être parlais-tu d'une autre utilisation du Thread ? Pourrais-tu m'en dire plus à ce sujet ?
Désolé pour les doubles posts au fait...
Désolé pour les doubles posts au fait...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bin non :-( j'aurai fait ce que tu as fait. Déclarer une classe héritant de Thread qui ferait la conversion dans la méthode run et qui préviendrait la classe qui l'a appelée lorsqu'elle a terminé