반응형

FFmpeg 자체적으로 인코딩을 일시 정지(pause) 및 재개(resume) 하는 기능은 제공하지 않는다. 하지만 다음과 같은 방법을 사용하면 비슷한 효과를 얻을 수 있다.
1. SIGSTOP 및 SIGCONT를 사용한 일시 정지 (Linux, macOS)
리눅스나 macOS에서는 프로세스에 SIGSTOP(정지) 및 SIGCONT(재개) 신호를 보내 FFmpeg 인코딩을 일시 정지하고 다시 시작할 수 있다.
사용 방법
- FFmpeg 실행
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast output.mp4
- FFmpeg 프로세스 찾기
출력된 프로세스 목록에서 PID(Process ID) 를 확인한다.ps aux | grep ffmpeg
- 일시 정지
kill -SIGSTOP <PID>
- 다시 시작
kill -SIGCONT <PID>
단점:
- 일시 정지 중에도 출력 파일이 계속 열린 상태이므로, 시스템 크래시나 종료가 발생하면 파일이 손상될 수 있다.
- Windows에서는 사용할 수 없다.
2. FFmpeg를 중단하고 중간 지점부터 다시 시작하기 (Checkpoint 방식)
FFmpeg 자체적으로 일시 정지 기능은 없지만, 특정 포인트까지 인코딩한 후 나중에 다시 시작하는 방법이 있다.
방법 1: 중간까지 인코딩한 파일을 기반으로 다시 시작
- 현재까지 인코딩된 영상을 확인
여기서 마지막으로 인코딩된 시간(예: 00:10:25.00)을 기록한다.ffmpeg -i output.mp4
- 중단된 시간부터 다시 인코딩
ffmpeg -ss 00:10:25 -i input.mp4 -c:v libx264 -crf 23 -preset fast output_continued.mp4
- 두 파일을 병합
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 도구)를 사용하면 프로세스를 일시 정지할 수 있다.
- PsSuspend 다운로드
- FFmpeg 실행 후, CMD를 관리자 권한으로 실행
- FFmpeg 프로세스 ID 확인
tasklist | findstr ffmpeg
- 일시 정지
pssuspend <PID>
- 다시 시작
pssuspend -r <PID>
단점:
- Windows에서는 파일 핸들 문제로 인해 일부 환경에서 정상적으로 동작하지 않을 수 있다.
결론
- Linux/macOS: SIGSTOP/SIGCONT 사용 가능.
- Windows: pssuspend 활용 가능.
- 재시작 가능한 인코딩: FFmpeg를 중단하고 -ss 옵션을 사용해 다시 시작.
- Checkpoint 방식: 특정 코덱(SVT-AV1 등)에서 지원.
완벽한 Pause & Resume 기능은 없지만, 상황에 따라 가장 적절한 방법을 선택하면 된다.
반응형
'IT생활' 카테고리의 다른 글
Proxmox에서 멀티소켓 시스템의 CPU 부하 분산과 영향 분석 (0) | 2025.03.11 |
---|---|
운영체제별 프로세스 그룹 및 스레드 수 제한 비교 (0) | 2025.03.11 |
하드디스크(HDD)는 무중력 환경에서 정상적으로 작동할 수 있을까? (0) | 2025.03.11 |
ZFS에서 L2ARC가 복수일 때의 작동 방식 (0) | 2025.03.11 |
게임에서 처음 실행 시 셰이더(Shader) 컴파일이 필요한 이유와 사전 컴파일 배포의 한계 (1) | 2025.03.11 |