FFmpeg에서 '과거 기간이 너무 큼'오류를 수정하는 방법은 무엇입니까?



문제를 제거하기 위해 도구를 사용해보십시오

FFmpeg는 비디오, 오디오 및 기타 멀티미디어 스트림을 처리하는 데 사용되는 무료 오픈 소스 프로그램입니다. 이 프로그램은 비디오 및 오디오 파일 처리의 명령 줄 기반 처리를 처리하도록 설계되었습니다. 그러나 최근에 많은 보고서가 ' 과거 기간이 너무 큼 ”비디오를 인코딩하거나 축소하는 동안 오류가 발생했습니다.



FFmpeg 로고



FFmpeg에서 '과거 기간이 너무 큼'오류의 원인은 무엇입니까?

여러 사용자로부터 수많은 보고서를받은 후 문제를 조사하기로 결정하고이를 완벽하게 수정하기위한 일련의 솔루션을 고안했습니다. 또한이 오류가 발생하는 이유를 조사하고 다음과 같이 나열했습니다.



  • 입력 프레임 속도 누락 : 대부분의 경우이 문제는 이미지에 대해 입력 프레임 속도가 입력되지 않았기 때문에 발생합니다. 이로 인해 프로그램은 입력 프레임 속도가 25fps라고 가정하고 그렇지 않은 경우 문제를 일으킬 수 있습니다.
  • 동기화 설정이 구현되지 않음 : 대부분의 사용자는 특정 동기화 설정을 구현하여 문제를 해결했습니다. 때로는 특정 프레임이 삭제되어이 오류가 트리거 될 수 있기 때문에 프레임이 제대로 동기화되지 않을 수 있습니다.

이제 문제의 성격에 대한 기본적인 이해를 마쳤으므로 해결 방법을 살펴 보겠습니다. 충돌을 피하기 위해 제시된 특정 순서대로 구현해야합니다.

솔루션 1 : 입력 프레임 추가

비디오의 입력 프레임 속도가 추가되지 않은 경우 일부 프레임이 삭제되고 오류가 트리거 될 수 있습니다. 따라서이 단계에서는 이에 대한 입력 프레임을 추가합니다.

  1. 비디오를 변환하는 데 사용한 소집을 관찰하십시오. 비슷한 다음에
    ffmpeg -i % 05d.png -r 24 -c : v libx264 -crf 5 out.mkv
  2. 이제 간단히 더하다 그만큼 프레임 속도 다음과 같이 사용되는 소집에
    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. 하지만이 대신 사용하다 다음 소집
    ffmpeg -framerate 24 -i % 05d.png -c : v libx264 -crf 5 out.mkv -async 1 -vsync 1
  3. 방금 ' -비동기 1 -vsync1 ”를 추가하고 사용중인 소집 끝에 추가해야합니다.
    노트 : 초기 소집은 예제로 사용 된 것과 다를 수 있습니다. 그러나 소집에 추가 된 변경 사항은 다를 수 없습니다.
2 분 읽기