ffmpeg는 한 번에 2pass 인코딩을 수행합니다.

ffmpeg는 한 번에 2pass 인코딩을 수행합니다.

아래와 같이 ffmpeg를 사용하여 비디오 파일을 인코딩하고 있습니다.

$ ffmpeg -i input.avi -pass 1 -an output.mp4
$ ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4

그래서 항상 2번 입력하는데, 한 번에 2패스로 영상을 인코딩할 수 있는 방법이 없을까요?

옵션을 자주 변경하는데, 물론 입력 및 출력 파일 이름도 매번 다릅니다.

답변1

2개의 개별 명령으로 실행하는 대신 다음과 같이 하나의 명령줄에서 실행할 수 있습니다.

$ ffmpeg -i input.avi -pass 1 -an output.mp4 && \
    ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4

차이점은 &&첫 번째 명령이 성공한 경우에만 두 번째 명령(두 번째 패스)이 실행된다는 것입니다. 이는 여전히 2개의 별도 작업이지만 이를 통해 이전에 수행해야 했던 2개의 명령줄 대신 하나의 명령줄을 실행할 수 있습니다.

또한 첫 번째 패스를 완료한 후 즉시 두 번째 패스를 실행하는 이점이 있습니다. 이를 수행하는 방식에서는 두 번째 패스를 시작하기 전에 첫 번째 패스가 완료될 때까지 기다려야 합니다.

답변2

저는 mencoder를 사용하고 있지만 fifo 장치를 사용하여 ffmpeg/avconv로 비슷한 작업을 수행할 수 있다고 확신합니다.

$ mkfifo passlog

$ mencoder infile.flv -passlogfile passlog ........... pass=1 &

$ mencoder infile.flv -passlogfile passlog ........... pass=2

관련 정보