1. 커맨드 작성 클래스
- 아래 예제 처럼 공백, 파라미터, argument를 작성하면 가독성이 너무 떨어지고, 작업 시 어렵다.
String ffmpegCommand = "ffmpeg -i"
+ " "
+ originFilePath
+ " "
+ "-vf fps=1/"
+ fp
+ " "
+ thumbImg;
- StringBuilder 로 클래스를 만들어서 사용하면 편한 것 같다.
public class CommandBuilder {
private StringBuilder builder;
public CommandBuilder() {
builder = new StringBuilder();
}
public CommandBuilder appendArgs(String arg) {
builder.append(arg).append(" ");
return this;
}
public CommandBuilder appendParam(String param) {
builder.append(param).append(" ");
return this;
}
public String done() {
return builder.toString().trim();
}
}
2. 커맨드
CommandBuilder ffmpegCommandBuilder = new CommandBuilder();
CommandBuilder command = ffmpegCommandBuilder.appendParam("ffmpeg")
.appendParam("-i").appendArgs(inputFilePath);
for (ProfileDto profile : profiles) {
command.appendParam("-map").appendArgs("0:v")
.appendParam("-map").appendArgs("0:a");
}
- 파라미터는 관리 대상으로 처리하면 "-i" 같이 직접 입력하지 않고, 사전에 실수를 예방할지도..