ffmpeg: imágenes de video en diferentes secciones y numeradas incrementalmente

ffmpeg: imágenes de video en diferentes secciones y numeradas incrementalmente

Estoy usando ffmpeg para extraer imágenes fijas de un video. Desde un momento determinado, durante un período determinado utilizando los parámetros -ss y -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

(Primero empiezo con la marca de tiempo/duración para que ffmpeg inicie la demux en ese punto).

Sin embargo, quiero usar varios puntos de partida (por ejemplo, a las 00:01:12, extraer las imágenes durante 2 segundos; a las 00:11:00 minutos, extraer las imágenes durante 4 segundos; etc.). esto manualmente, reemplazando la marca de tiempo y la duración, y moviendo las imágenes de salida cada vez, pero lo ideal es ingresar las marcas de tiempo y las duraciones todas a la vez, y no sobrescribir las imágenes de salida. ¿Hay alguna forma de hacer esto? ¿Quizás con un archivo externo con las marcas de tiempo/duraciones?

Soy nuevo en esto y prefiero hacerlo solo con ffmpeg, no con bash.

Respuesta1

No veo una manera de hacerlo con ffmpeg fácilmente. Hay un mezclador de segmentos pero no se puede establecer la duración de los segmentos.

No hay nada que te impida hacerlo así, lo cual creo que es bastante simple. Simplemente cree un archivo de texto que contenga una lista de puntos de inicio y duraciones separados por comas:

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

Y luego en 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

Esto creará archivos de salida que comienzan con un número único (1, 2, 3,…).

información relacionada