FFmpeg 동영상 손실 오류? Non-monotonic DTS 에러 + 2시간 잘랐는데 25GB 나온 이유

FFmpeg로 대용량 영상을 자르다가 정말 당황스러운 상황을 겪는 분들이 많습니다.

✔ 원본: 27GB / 12시간
✔ 처음 2시간만 잘랐는데 25GB
Non-monotonic DTS 오류 발생
✔ “혹시 나머지 9시간이 깨져서 2시간에 몰린 건가요?”

결론부터 말하면 그건 아닙니다.
이 오류는 “데이터가 몰렸다”는 뜻이 아니라, 타임스탬프(DTS/PTS)가 꼬여 있다는 경고에 가깝습니다.


1️⃣ Non-monotonic DTS 오류, 정확히 무슨 뜻일까?

🔍 핵심만 정리하면

  • DTS = 디코딩 타임스탬프
  • Non-monotonic = 시간이 앞뒤로 뒤섞여 있음
  • FFmpeg가
    👉 “영상 시간 정보가 이상해서 자동으로 고쳐서 처리할게요”
    라고 알려주는 메시지입니다.

📌 의미 없는 오류 아님 / 데이터 손실 알림도 아님
📌 하지만 무손실 컷(-c copy) 작업에선 결과가 꼬일 수 있음


2️⃣ “2시간이 25GB”가 나온 진짜 이유

아래 중 하나 이상일 가능성이 큽니다.

❌ 흔한 오해

“나머지 9시간이 오류라서 앞에 몰렸다”

👉 거의 아닙니다.

✅ 실제 원인 후보

  1. VBR(가변 비트레이트)
    → 앞부분 2시간이 고비트 구간일 수 있음
  2. -c copy + 키프레임 문제
    → 컷 지점이 정확히 적용 안 됨
  3. 타임스탬프 깨짐
    → FFmpeg가 duration/seek를 잘못 해석
  4. 사실상 끝까지 포함된 파일인데
    재생 시간만 2시간처럼 보이는 경우

3️⃣ 지금 당장 해야 할 1단계: 파일 정상 여부 확인

✔ 잘린 파일이 진짜 2시간인지 확인

ffprobe -v error -show_entries format=duration -of default=nw=1 out_2h.mp4

✔ 스트림 오류 위치 확인

ffmpeg -v warning -i input.mp4 -f null - 2> warn.txt

warn.txt
Non-monotonic DTS어느 시점부터 나는지 확인하세요.


4️⃣ 가장 안전한 무손실 컷 방법 (추천 ⭐)

✅ 방법 ① 타임스탬프 재생성 + 컷

ffmpeg -ss 0 -i input.mp4 -t 02:00:00 \
-map 0 -c copy \
-fflags +genpts \
-reset_timestamps 1 \
-avoid_negative_ts make_zero out_2h.mp4

✔ 데이터 재인코딩 ❌
✔ DTS 꼬임 대부분 해결
✔ 용량 정상화 확률 높음


5️⃣ 그래도 안 되면: 리먹스 후 다시 자르기

원본 컨테이너 인덱스가 깨진 경우에 효과적입니다.

✅ 방법 ② 리먹스(재포장) 먼저

ffmpeg -i input.mp4 -map 0 -c copy -fflags +genpts fixed.mp4

그 다음:

ffmpeg -ss 0 -i fixed.mp4 -t 02:00:00 \
-map 0 -c copy \
-avoid_negative_ts make_zero out_2h.mp4

6️⃣ 정말 급하면 최후의 방법 (확실하지만 무손실 아님)

❗ 재인코딩 컷 (DTS 문제 거의 100% 해결)

ffmpeg -ss 0 -i input.mp4 -t 02:00:00 \
-c:v libx264 -preset veryfast -crf 18 \
-c:a aac -b:a 192k out_2h_reencode.mp4

✔ 용량 정상
✔ 시간 정확
✔ 오류 사라짐
❌ 약간의 화질 손실 (CRF 18이면 체감 거의 없음)


7️⃣ 자주 묻는 질문 (FAQ)

Q. Non-monotonic DTS 오류면 영상이 망가진 건가요?
A. 아닙니다.
시간 정보만 꼬였을 뿐 데이터 자체가 손실됐다는 의미는 아닙니다.

Q. 왜 대용량 녹화 파일에서 자주 생기나요?
A.

  • 장시간 녹화
  • OBS/캡처카드
  • 일시정지·드롭프레임
    이런 환경에서 타임스탬프가 쉽게 깨집니다.

Q. -c copy는 항상 안전한가요?
A. 아닙니다.
타임스탬프가 깨진 파일엔 오히려 위험할 수 있습니다.


🔚 핵심 요약

✔ 2시간에 25GB → 나머지 9시간 몰린 게 아님
✔ Non-monotonic DTS = 시간 정보 꼬임 경고
✔ 무손실 컷 시 타임스탬프 옵션 필수
✔ 안 되면 리먹스 → 그래도 안 되면 재인코딩

Leave a Comment