본문 바로가기
IT생활

FFmpeg 인코딩을 일시 정지(pause) 및 재개(resume) 하는 방법

by 우물 밖 개구리. 2025. 3. 11.
반응형

FFmpeg 자체적으로 인코딩을 일시 정지(pause) 및 재개(resume) 하는 기능은 제공하지 않는다. 하지만 다음과 같은 방법을 사용하면 비슷한 효과를 얻을 수 있다.


1. SIGSTOP 및 SIGCONT를 사용한 일시 정지 (Linux, macOS)

리눅스나 macOS에서는 프로세스에 SIGSTOP(정지) 및 SIGCONT(재개) 신호를 보내 FFmpeg 인코딩을 일시 정지하고 다시 시작할 수 있다.

사용 방법

  1. FFmpeg 실행
    ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast output.mp4
    
  2. FFmpeg 프로세스 찾기
    ps aux | grep ffmpeg
    
    출력된 프로세스 목록에서 PID(Process ID) 를 확인한다.
  3. 일시 정지
    kill -SIGSTOP <PID>
    
  4. 다시 시작
    kill -SIGCONT <PID>
    

단점:

  • 일시 정지 중에도 출력 파일이 계속 열린 상태이므로, 시스템 크래시나 종료가 발생하면 파일이 손상될 수 있다.
  • Windows에서는 사용할 수 없다.

2. FFmpeg를 중단하고 중간 지점부터 다시 시작하기 (Checkpoint 방식)

FFmpeg 자체적으로 일시 정지 기능은 없지만, 특정 포인트까지 인코딩한 후 나중에 다시 시작하는 방법이 있다.

방법 1: 중간까지 인코딩한 파일을 기반으로 다시 시작

  1. 현재까지 인코딩된 영상을 확인
    ffmpeg -i output.mp4
    
    여기서 마지막으로 인코딩된 시간(예: 00:10:25.00)을 기록한다.
  2. 중단된 시간부터 다시 인코딩
    ffmpeg -ss 00:10:25 -i input.mp4 -c:v libx264 -crf 23 -preset fast output_continued.mp4
    
  3. 두 파일을 병합
    ffmpeg -i "concat:output.mp4|output_continued.mp4" -c copy final_output.mp4
    

장점:
✅ Windows, Linux, macOS에서 사용 가능
✅ 인코딩 도중 크래시가 나도 복구 가능

단점:
❌ 완벽한 일시 정지가 아니라, 중단한 지점에서 다시 시작하는 방식
❌ 일부 코덱에서는 정확한 컷을 만들기 어려울 수 있음


3. FFmpeg Checkpoint 기능 (Experimental)

SVT-AV1과 같은 일부 코덱은 Checkpoint 기능을 지원하여 중단된 부분부터 다시 시작할 수 있다.

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 23 -preset 6 -checkpoint 30 output.ivf

위 명령어에서 -checkpoint 30 옵션은 30프레임 단위로 복구 지점을 만든다.

단점:

  • 현재 FFmpeg의 기본 H.264/HEVC 인코더(libx264, libx265)에서는 지원되지 않음.
  • 특정 코덱에서만 사용 가능.

4. Windows에서 프로세스 일시 정지 및 재개

Windows에서는 pssuspend (Sysinternals 도구)를 사용하면 프로세스를 일시 정지할 수 있다.

  1. PsSuspend 다운로드
  2. FFmpeg 실행 후, CMD를 관리자 권한으로 실행
  3. FFmpeg 프로세스 ID 확인
    tasklist | findstr ffmpeg
    
  4. 일시 정지
    pssuspend <PID>
    
  5. 다시 시작
    pssuspend -r <PID>
    

단점:

  • Windows에서는 파일 핸들 문제로 인해 일부 환경에서 정상적으로 동작하지 않을 수 있다.

결론

  1. Linux/macOS: SIGSTOP/SIGCONT 사용 가능.
  2. Windows: pssuspend 활용 가능.
  3. 재시작 가능한 인코딩: FFmpeg를 중단하고 -ss 옵션을 사용해 다시 시작.
  4. Checkpoint 방식: 특정 코덱(SVT-AV1 등)에서 지원.

완벽한 Pause & Resume 기능은 없지만, 상황에 따라 가장 적절한 방법을 선택하면 된다.

반응형