ffmpeg - 다양한 섹션의 비디오 이미지 및 증분 번호 매기기

ffmpeg - 다양한 섹션의 비디오 이미지 및 증분 번호 매기기

ffmpeg를 사용하여 비디오에서 정지 이미지를 추출하고 있습니다. 지정된 시간부터 지정된 기간 동안 -ss 및 -t 매개변수를 사용합니다.

ffmpeg -ss 00:10:01 -t 2 -i /Volumes/OO_8/VideoSource.mkv -qscale:v 2 -start_number  /Users/Olivier/Pictures/ScreenCaptures/ViewsOfNature-%4d.jpeg

(ffmpeg가 해당 시점에서 demux를 시작하도록 타임스탬프/기간부터 먼저 시작합니다.)

하지만 여러 시작점을 사용하고 싶습니다(예: 00:01:12에 2초 동안 이미지를 추출하고, 00:11:00에 4초 동안 이미지를 추출하는 등). 수동으로 타임스탬프와 지속 시간을 바꾸고 출력 이미지를 매번 이동하지만 이상적으로는 타임스탬프와 지속 시간을 모두 한 번에 입력하고 출력 이미지를 덮어쓰지 않고 싶습니다. 이를 수행할 수 있는 방법이 있습니까? 아마도 타임스탬프/기간이 있는 외부 파일이 있을까요?

나는 이것에 익숙하지 않으며 bash를 사용하지 않고 ffmpeg로만 수행하는 것을 선호합니다.

답변1

ffmpeg로 쉽게 할 수 있는 방법이 없습니다. 세그먼트 멀티플렉서가 있지만 세그먼트 지속 시간을 설정할 수 없습니다.

당신이 이렇게 하는 것을 막을 수 있는 것은 아무것도 없습니다. 저는 이것이 아주 간단하다고 믿습니다. 시작 지점과 기간이 쉼표로 구분된 목록이 포함된 텍스트 파일을 생성하면 됩니다.

$ cat split.txt
00:01:05,5
00:06:10,2
00:08:25,1

그런 다음 Bash에서:

count=1
while read -r -d ',' start duration; do
  ffmpeg -ss "$start" -i input.mp4 -t "$duration" "$count-output-%04d.jpg"
  (( count++ ))
done < split.txt

그러면 고유 번호(1, 2, 3, ...)로 시작하는 출력 파일이 생성됩니다.

관련 정보