피드로 돌아가기
How to Split Video into Segments with FFmpeg (CLI + API)
Dev.toDev.to
Infrastructure

Keyframe 정렬 기반 Stream Copy를 통한 무손실 비디오 분할 최적화

How to Split Video into Segments with FFmpeg (CLI + API)

Javid Jamae2026년 5월 23일7intermediate

Context

대용량 비디오 파일을 소셜 미디어 배포용 등 일정 길이의 세그먼트로 분할해야 하는 요구사항 발생. 일반적인 재인코딩 방식은 막대한 컴퓨팅 자원 소모와 처리 시간 증가라는 병목 지점 존재.

Technical Solution

  • FFmpeg Segment Muxer(-f segment)를 활용한 단일 패스 기반 멀티 파일 출력 구조 설계
  • -c copy 옵션을 통한 Stream Copy 방식으로 디코딩 및 재인코딩 과정을 제거하여 처리 속도 극대화
  • -reset_timestamps 1 설정을 통해 각 세그먼트의 타임스탬프를 0으로 초기화함으로써 플레이어 재생 호환성 확보
  • -segment_list 기반의 CSV 매니페스트 생성을 통한 세그먼트 간 정밀한 시작/종료 시간 추적 메커니즘 구현
  • 정확한 분할 시간(Frame-accurate) 요구 시 -force_key_frames를 통한 강제 키프레임 삽입 및 재인코딩 전략 채택

1. 처리 속도가 우선인 경우 `-c copy`와 Segment Muxer 조합 검토

2. 프레임 단위의 정밀한 컷팅이 필요한 경우 `-force_key_frames` 적용 및 재인코딩 비용 산정

3. 자동화 파이프라인 내 파일 충돌 방지를 위해 `-strftime 1` 기반의 타임스탬프 파일명 설계 적용

4. HTTP 타임아웃으로 인한 작업 중단을 방지하기 위해 롱런 작업(Long-running job)은 Async API 또는 Background Worker 구조로 분리

원문 읽기