자바 ffmpeg command로 직접 사용 할 때

구운몽·2024년 3월 12일
0

1. 커맨드 작성 클래스

  • 아래 예제 처럼 공백, 파라미터, argument를 작성하면 가독성이 너무 떨어지고, 작업 시 어렵다.
String ffmpegCommand = "ffmpeg -i"
                + " "
                + originFilePath
                + " "
                + "-vf fps=1/"
                + fp
                + " "
                + thumbImg;
  • StringBuilder 로 클래스를 만들어서 사용하면 편한 것 같다.
public class CommandBuilder {
    private StringBuilder builder;

    public CommandBuilder() {
        builder = new StringBuilder();
    }

    // ffmpeg argument에 입력할 변수를 입력한다.
    public CommandBuilder appendArgs(String arg) {
        builder.append(arg).append(" "); // 문자열 추가 후 공백 추가
        return this;
    }

    // ffmpeg에서 사용하는 명령어를 입력한다.
    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" 같이 직접 입력하지 않고, 사전에 실수를 예방할지도..

0개의 댓글