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

관련 정보