Hi,
das letzte Thema habe ich leider zu schnell als erledigt markiert.
Mir hat die Antwort zwar ein bisschen weiter gebracht, jedoch habe ich immer noch Probleme mit exec.
Hier mein Problem:
Ich bin Anfänger und möchte folgendes realisieren:
Mein Programm soll eine Textdatei auslesen, die mehrere Dateinamen enthält. Diese Dateien sollen dann nacheinander von ffmpeg in .mp4 konvertiert werden. Ich bin bisher so weit gekommen, dass das Programm die Textdatei ausließt und die Datei versucht zu konvertieren. Leider bleibt es bei manchen Dateien hängen und ich finde den Grund dafür nicht :rtfm: Wenn ich die Dateien dann direkt über die ffmpeg.exe konvertiere, funktioniert es ohne Probleme. Mir scheint, als ob mein Programm an dieser Stelle hängen bleibt:
. Leider weiß ich nicht wieso, weil ich noch nicht so viele Kenntnisse von Java habe. Es ist mir nicht besonders wichtig, ob ich es verstehen werde. Ich würde mich also schon über eine Lösung für das Problem freuen
Vielen Dank im Voraus.
Hier mein Quellcode:
das letzte Thema habe ich leider zu schnell als erledigt markiert.
Mir hat die Antwort zwar ein bisschen weiter gebracht, jedoch habe ich immer noch Probleme mit exec.
Hier mein Problem:
Ich bin Anfänger und möchte folgendes realisieren:
Mein Programm soll eine Textdatei auslesen, die mehrere Dateinamen enthält. Diese Dateien sollen dann nacheinander von ffmpeg in .mp4 konvertiert werden. Ich bin bisher so weit gekommen, dass das Programm die Textdatei ausließt und die Datei versucht zu konvertieren. Leider bleibt es bei manchen Dateien hängen und ich finde den Grund dafür nicht :rtfm: Wenn ich die Dateien dann direkt über die ffmpeg.exe konvertiere, funktioniert es ohne Probleme. Mir scheint, als ob mein Programm an dieser Stelle hängen bleibt:
Java:
int exitVal = pr.waitFor();
Vielen Dank im Voraus.
Hier mein Quellcode:
Java:
import java.io.*;
import java.util.ArrayList;
class MP4_Konverter
{
public static void main(String[] args)
{
auswerten(args);
}
public static void auswerten(String[] dateiname)
{
try
{
FileReader datei = new FileReader(dateiname[0]);
BufferedReader br = new BufferedReader(datei); // Wird über 'datei' gelegt, damit ganze Zeilen ausgewertet werden können.
String inhalt = "";
ArrayList<String> dateien = new ArrayList<String>();
while((inhalt = br.readLine()) != null)
{
dateien.add(inhalt);
}
br.close();
for(String element : dateien)
{
System.out.println("Die Datei '" + element + "' wird verarbeitet.");
String command = "\"C:\\ffmpeg\\bin\\ffmpeg.exe\" -i \"C:\\Users\\Mark\\Desktop\\Umwandeln\\" + element + ".flv\"" + " -vcodec copy -acodec copy \"C:\\Users\\Mark\\Desktop\\Umwandeln\\" + element + ".mp4\"";
int errorCode = exec(command);
if (errorCode != 0) {
System.out.println("Programm fertig");
return;
}
}
}
catch(IOException exception)
{
System.out.println(exception.getMessage());
}
}
public static int exec(String cmd) {
Runtime rt = Runtime.getRuntime();
Process pr;
try {
pr = rt.exec(cmd);
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream(), "UTF-8"));
BufferedReader error = new BufferedReader(new InputStreamReader(pr.getErrorStream(), "UTF-8"));
String line = null;
while ((line = input.readLine()) != null || (line = error.readLine()) != null) {
System.out.println(line);
}
int exitVal = pr.waitFor();
System.out.println("Exited with error code " + exitVal);
return exitVal;
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return 0;
}
}
Zuletzt bearbeitet: