Vous pouvez utiliser la méthode waitFor()
de java.lang.Process
:
Process p = Runtime.getRuntime().exec("ffmpeg...");
int exitValue = p.waitFor()
Avec cela, le thread courant jusqu'à ce que le Process p
a pris fin.
EDIT:
Vous pouvez essayer de voir la sortie de ffmpeg:
class StreamDump implements Runnable {
private InputStream stream;
StreamDump(InputStream input) {
this.stream = input;
}
public void run() {
try {
int c;
while ((c = stream.read()) != -1) {
System.out.write(c);
}
} catch (Throwable t) {
t.printStackTrace();
}
}
}
et
Process p = Runtime.getRuntime().exec("ffmpeg.exe...");
new Thread(new StreamDump(p.getErrorStream()), "error stream").start();
new Thread(new StreamDump(p.getInputStream()), "output stream").start();
try {
p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Exit value: " + p.exitValue());
Vous découvrirez que c'est une manière très fragile de construire un 'processus' quand il rencontre un chemin ou un nom de fichier contenant un espace. Comme des conseils généraux. 1) Utilisez les méthodes qui acceptent un tableau d'arguments. 2) Utilisez un 'ProcessBuilder' pour le code 1.5+, ce qui le rend un peu plus simple à 3) Implémentez toutes les suggestions de [Quand Runtime.exec() ne le fera pas] (http://www.javaworld.com/javaworld/ jw-12-2000/jw-1229-traps.html) BTW - pourquoi utiliser ffmpeg plutôt que jffmpeg? –
Qu'est-ce que cela a à voir avec Xuggle? À ma connaissance, ffmpeg & Xuggle sont des projets entièrement distincts. –
Je n'étais pas au courant de jffmpeg.Merci. –