FFmpeg는 비디오, 오디오 및 기타 멀티미디어 스트림을 처리하는 데 사용되는 무료 오픈 소스 프로그램입니다. 이 프로그램은 비디오 및 오디오 파일 처리의 명령줄 기반 처리를 처리하도록 설계되었습니다. 그러나 아주 최근에 "과거 기간이 너무 큼 ” 비디오를 인코딩하거나 축소하는 동안 오류가 발생했습니다.
FFmpeg에서 "과거 기간이 너무 큼" 오류의 원인은 무엇입니까?
여러 사용자로부터 수많은 보고를 받은 후 문제를 조사하기로 결정하고 이를 완전히 수정하기 위한 일련의 솔루션을 고안했습니다. 또한 이 오류가 발생하는 원인을 조사하여 다음과 같이 나열했습니다.
- 입력 프레임 속도 누락: 대부분의 경우 이미지에 입력 프레임 속도가 입력되지 않아 문제가 발생합니다. 결과적으로 프로그램은 입력 프레임 속도가 25fps라고 가정하고 그렇지 않은 경우 문제를 일으킬 수 있습니다.
- 동기화 설정이 구현되지 않음: 대부분의 사용자는 특정 동기화 설정을 구현하여 문제를 해결했습니다. 경우에 따라 특정 프레임이 삭제되고 이 오류가 발생하여 프레임이 제대로 동기화되지 않을 수 있습니다.
이제 문제의 본질에 대한 기본적인 이해를 하였으므로 해결 방법으로 넘어갈 것입니다. 충돌을 피하기 위해 제시된 특정 순서대로 구현해야 합니다.
해결책 1:입력 프레임 추가
비디오의 입력 프레임 속도가 추가되지 않은 경우 일부 프레임이 삭제되고 오류가 트리거될 수 있습니다. 따라서 이 단계에서는 이에 대한 입력 프레임을 추가합니다.
- 동영상을 변환하는 데 사용한 소집을 관찰합니다. 유사일 수 있습니다. 다음
ffmpeg -i %05d.png -r 24 -c:v libx264 -crf 5 out.mkv
- 이제 간단히 추가하세요. 프레임 속도 다음과 같이 사용되는 소집에
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
- 그러나 이 대신 사용 다음 소집
ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv -async 1 -vsync 1
- “-async 1 -vsync1 "를 소집에 추가하고 사용 중인 소집 끝에 추가해야 합니다.
참고: 초기 소집은 예로 사용된 소집과 다를 수 있습니다. 그러나 소집에 추가된 변경 사항은 다르지 않아야 합니다.