썸네일에 대한 요구 사항은 다음과 같습니다.
- 장면 변경은 마지막 장면과 최소 6% 달라야 합니다.
select=gt(scene\,0.06)
- 가로 세로 비율은 1280px 너비로 유지됩니다.
scale='min(1280\, iw):-1'
- 각 썸네일 사이의 최소 1초
-r 1
- 파일 이름은 썸네일의 시간 오프셋을 나타냅니다.
-vsync 0 -frame_pts 1
이는 현재 아래와 같은 명령에 입력됩니다.
ffmpeg -copyts -i file.mp4 -vf "select=gt(scene\,0.06),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 snapshot.1280.% 04d.png -f null
그러나 출력에 오류가 발생합니다.
-vsync 0 및 -r을 사용하면 잘못된 출력 파일이 생성될 수 있습니다.
[image2 @ 0x7f804500a000] 애플리케이션이 스트림 0의 muxer에 대해 단조롭게 증가하지 않고 유효하지 않은 dts를 제공했습니다: 463 >= 463
명령에서 이러한 사항을 걱정해야 합니까, 아니면 무시해야 합니까?
답변1
스냅 사이에 최소 1초가 필요한 경우 해당 선택 표현식을 수정해야 합니다. 이 명령의 모든 -r
작업은 Frame_pts로 인해 형성되는 파일 이름에 영향을 미칩니다. ("잘못된 파일" 경고는 무시할 수 있습니다. 이는 다른 시나리오를 의미합니다).
ffmpeg -copyts -i file.mp4 -vf "select=eq(n\,0)+gt(scene\,0.06)*gte(t-prev_selected_t\,1),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 snapshot.1280.%04d.png