초당 1의 최소 속도로 장면 전환 중 비디오 썸네일 출력

초당 1의 최소 속도로 장면 전환 중 비디오 썸네일 출력

썸네일에 대한 요구 사항은 다음과 같습니다.

  1. 장면 변경은 마지막 장면과 최소 6% 달라야 합니다.select=gt(scene\,0.06)
  2. 가로 세로 비율은 1280px 너비로 유지됩니다.scale='min(1280\, iw):-1'
  3. 각 썸네일 사이의 최소 1초-r 1
  4. 파일 이름은 썸네일의 시간 오프셋을 나타냅니다.-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

관련 정보