비디오 코드를 인코딩하기 위해 Java 코드를 통해 ffmpeg.exe
을 실행 중입니다. ffmpeg가 종료되면 (예 : 비디오 파일이 인코딩 된 경우) 내 프로그램에서 어떻게 알 수 있습니까?언제 ffmpeg가 종료됩니까?
Runtime.getRuntime().exec("ffmpeg -ac 2 -i audio.wav -i video.flv -sameq out.flv");
비디오 코드를 인코딩하기 위해 Java 코드를 통해 ffmpeg.exe
을 실행 중입니다. ffmpeg가 종료되면 (예 : 비디오 파일이 인코딩 된 경우) 내 프로그램에서 어떻게 알 수 있습니까?언제 ffmpeg가 종료됩니까?
Runtime.getRuntime().exec("ffmpeg -ac 2 -i audio.wav -i video.flv -sameq out.flv");
당신은 java.lang.Process
의 waitFor()
방법을 사용할 수 있습니다 : 여기
Process p = Runtime.getRuntime().exec("ffmpeg...");
int exitValue = p.waitFor()
을의 Process p
때까지 현재 스레드가 대기 종료되었습니다.
편집 :
당신는 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();
}
}
}
및
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());
이것은 ffmpeg에서 작동하지 않습니다. –
무슨 일입니까? 어떤 오류가 있습니까? – jalopaba
아니요 현재 스레드와 부모 스레드 모두 대기 상태가됩니다. 그리고 비디오 인코딩도 일시 중지됩니다. –
파일 out.flv가 시도 된 경우 나, 주위에 작품을 발견 인코딩이 끝나면 이름을 바꿀 수 있습니다.
Runtime.getRuntime().exec("ffmpeg -ac 2 -i audio.wav -i video.flv -sameq out.flv");
File tempFile=new File("out.flv");
File renamedFile=new File("renamed.flv");
while(!tempFile.renameTo(renamedFile)); //try re-naming the file which is being encoded by ffmpeg
System.out.println("Encoding done");
공백이 포함 된 경로 나 파일 이름을 발견하면 매우 약한 방법으로 '프로세스'를 구성 할 수 있습니다. 일반적인 팁. 1) 인수 배열을 허용하는 메소드를 사용하십시오. 2) 1.5+ 코드에 대해'ProcessBuilder'를 사용하면 약간 더 간단 해집니다. 3) [Runtime.exec()가 실행되지 않을 때]의 모든 제안을 구현하십시오. (http://www.javaworld.com/javaworld/ jw-12-2000/jw-1229-traps.html) BTW - 왜 jffmpeg 대신 ffmpeg를 사용합니까? –
이것이 Xuggle과 어떤 관련이 있습니까? 필자가 알고있는 ffmpeg와 Xuggle은 완전히 별개의 프로젝트입니다. –
jffmpeg에 대해 알지 못했습니다. 감사합니다. –