![ffmpeg - 다양한 섹션의 비디오 이미지 및 증분 번호 매기기](https://rvso.com/image/1451545/ffmpeg%20-%20%EB%8B%A4%EC%96%91%ED%95%9C%20%EC%84%B9%EC%85%98%EC%9D%98%20%EB%B9%84%EB%94%94%EC%98%A4%20%EC%9D%B4%EB%AF%B8%EC%A7%80%20%EB%B0%8F%20%EC%A6%9D%EB%B6%84%20%EB%B2%88%ED%98%B8%20%EB%A7%A4%EA%B8%B0%EA%B8%B0.png)
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, ...)로 시작하는 출력 파일이 생성됩니다.