FFmpeg 무손실 자르기: 키프레임과 시작점 오차 이해

FFmpeg 무손실 자르기에서 시작점이 요청한 시각과 어긋나는 것은 키프레임 단위 제한 때문이며, 속도와 정밀도 중 무엇이 필요한지에 따라 방법이 달라집니다.
| 증상 | 원인 | 할 일 |
|---|---|---|
| 자른 시작점이 요청한 프레임과 다름 | 재인코딩 없는 자르기는 가까운 키프레임부터 복사 | -ss 위치와 출력 방식을 확인하고 짧은 구간으로 먼저 시험 |
| 프레임 단위 정확도가 필요함 | -c copy는 빠르지만 키프레임 단위로만 자름 |
정확한 시점이 중요하면 경계 구간만 재인코딩 |
| 일부 플레이어에서 탐색이 어색함 | 잘린 시작점의 타임스탬프 문제 | 결과 컨테이너와 재생 프로그램 양쪽에서 시험 |
| 여러 파일을 한 번에 처리하려 함 | 파일마다 키프레임 간격이 다를 수 있음 | 샘플 파일로 경계 오차를 먼저 확인한 뒤 배치 실행 |
영상을 빠르게 자르려면 스트림 복사를 쓸 수 있지만 시작점이 요청 시각과 정확히 맞지 않을 수 있습니다. 키프레임 단위 제한을 알고 속도와 정밀도 중 무엇이 필요한지 먼저 정합니다.
왜 원하는 프레임에서 시작하지 않나요?
압축 영상의 많은 프레임은 앞 프레임 정보에 의존합니다. 다시 인코딩하지 않는 자르기는 독립적으로 해석 가능한 가까운 지점부터 복사해야 할 수 있습니다. 몇 초 오차가 보인다면 명령이 틀렸다고 단정하기 전에 키프레임 구조를 확인합니다.
-ss의 위치와 출력 방식에 따라 탐색 동작이 달라집니다. 공식 명령 설명을 현재 버전 기준으로 읽고 짧은 복사본에 시험합니다. 시작 시각과 길이를 동시에 적을 때는 종료 시각과 지속 시간을 혼동하지 않습니다.
무손실 방식은 언제 적합한가요?
회의 녹화의 큰 구간을 대략 나누거나 재인코딩 전 원본을 분할할 때 유용합니다. 프레임 단위 편집, 정확한 자막 시작, 방송 큐처럼 시점이 중요한 작업은 잘린 경계를 다시 인코딩하는 편이 낫습니다.
-c copy는 영상과 음성을 다시 압축하지 않아 빠릅니다. 다만 잘린 시작점의 타임스탬프 때문에 일부 플레이어에서 탐색이 어색할 수 있습니다. 결과 컨테이너와 재생 프로그램 양쪽에서 시험합니다.
안전한 검증 순서는?
원본과 다른 파일명으로 30초 정도의 짧은 구간을 만듭니다. 첫 장면과 마지막 장면, 오디오 시작을 확인합니다. 필요한 구간보다 앞 장면이 들어왔는지, 끝 음성이 잘렸는지도 봅니다.
정확도가 부족하면 전체를 무조건 고화질로 다시 압축하지 않습니다. 필요한 구간만 적절한 코덱과 품질 설정으로 인코딩합니다. 출력 파일 크기와 처리 시간을 기록해 작업 전체에 적용할 수 있는지 판단합니다.
명령줄의 따옴표와 시간 표기도 확인합니다. 원본은 검증 완료까지 보관하고 배치 작업은 샘플 한 개가 통과한 뒤 실행합니다. 같은 카메라 파일이라도 키프레임 간격이 다를 수 있습니다.
자주 묻는 질문
무손실이면 화면이 완전히 같은가요?
재압축은 없지만 시작점 선택과 타임스탬프는 달라질 수 있습니다.
정확히 한 프레임에서 자를 수 있나요?
그 정밀도가 필요하면 경계 구간 재인코딩을 검토합니다.
소리만 늦게 시작해요.
입력 타임스탬프와 스트림 시작 시각을 확인하고 다른 플레이어에서도 시험합니다.
여러 파일을 일괄 처리하려면?
첫 파일의 경계 오차와 재생 호환을 확인한 뒤 같은 출처의 두 번째 샘플도 시험합니다. 원본마다 키프레임 간격이 다를 수 있어 한 건의 성공만으로 전체 배치를 실행하지 않습니다.
공식 자료와 함께 보기
이 글은 2026년 9월 13일에 공식 문서를 확인해 작성했습니다. 메뉴 이름은 설치 버전과 운영체제 언어에 따라 달라질 수 있습니다.
관련 안내
화면 캡처
