Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

FFmpeg 'Past Duration Too Large' 오류 해결 방법 총정리

FFmpeg는 동영상, 오디오 등 다양한 멀티미디어 스트림을 처리할 수 있는 무료 오픈소스 프로그램입니다. 주로 명령줄 기반으로 비디오 및 오디오 파일을 변환하고 처리하는 데 사용됩니다. 그런데 최근 들어 동영상을 인코딩하거나 해상도를 줄이는 과정에서 "Past Duration Too Large"(과거 지속 시간이 너무 큼) 오류가 발생한다는 사용자 보고가 급증하고 있습니다.

FFmpeg  Past Duration Too Large  오류 해결 방법 총정리

FFmpeg에서 "Past Duration Too Large" 오류가 발생하는 이유

여러 사용자로부터 접수된 수많은 사례를 바탕으로 문제를 분석한 결과, 완전히 해결할 수 있는 방법들을 마련했습니다. 또한 이 오류를 유발하는 주요 원인도 파악했는데, 다음과 같습니다.

  • 입력 프레임레이트 누락: 대부분의 경우 이미지 입력 시 프레임레이트(framerate)를 지정하지 않아서 발생합니다. 이 경우 프로그램이 기본값인 25fps로 가정하기 때문에 실제 값이 다르면 문제가 생길 수 있습니다.
  • 동기화 설정 미적용: 특정 동기화 옵션을 적용하자 문제가 해결된 사례가 많았습니다. 프레임이 제대로 동기화되지 않으면 일부 프레임이 드롭되면서 이 오류가 나타날 수 있습니다.

이제 문제의 성격에 대해 기본적으로 이해했으니 해결 방법으로 넘어가겠습니다. 설정 충돌을 피하려면 아래 소개하는 순서대로 진행하는 것이 좋습니다.

해결 방법 1: 입력 프레임레이트 추가

비디오의 입력 프레임레이트가 지정되지 않으면 일부 프레임이 드롭되어 오류가 발생할 수 있습니다. 따라서 이 단계에서는 입력 프레임레이트를 직접 추가해 보겠습니다.

  1. 먼저 영상 변환에 사용 중인 명령어를 확인합니다. 아래와 비슷한 형태일 것입니다.
    ffmpeg -i %05d.png -r 24 -c:v libx264 -crf 5 out.mkv
  2. 이제 명령어에 -framerate 옵션을 추가해 다음과 같이 변경합니다.
    ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv
  3. 문제가 여전히 발생하는지 확인합니다.

해결 방법 2: 동기화 플래그 사용

동기화(sync) 플래그를 추가하면 출력 영상과 입력 영상을 원본 프레임레이트에 맞춰 동기화할 수 있습니다. 동기화 명령이 포함되지 않으면 프레임이 올바르게 정렬되지 않을 가능성이 있습니다. 이 단계에서는 동기화 명령을 추가해 보겠습니다.

  1. 현재 사용 중인 명령어는 아마 다음과 같을 것입니다.
    ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv
  2. 대신 다음과 같이 -async-vsync 옵션이 추가된 명령어를 사용합니다.
    ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv -async 1 -vsync 1
  3. 핵심은 명령어 끝에 "-async 1 -vsync 1"을 추가하는 것이며, 이 옵션들은 반드시 명령어의 맨 뒤에 위치해야 합니다.
    참고: 예시로 든 명령어와 실제 사용 중인 명령어가 다를 수 있습니다. 하지만 추가해야 하는 옵션 자체는 동일하게 적용하면 됩니다.