Cómo crear videos a partir de imágenes con nombre de archivo yyyy-MM-dd:HH:mm:ss

Cómo crear videos a partir de imágenes con nombre de archivo yyyy-MM-dd:HH:mm:ss

Tengo muchas imágenes (>11.000) y quiero crear un vídeo con avconv como timelapse. Con ffmpeg hice el truco con:

ffmpeg -r 25 -i "/mnt/stora/dahopi/Pictures/Gartencam/%*.jpg" \
       -vf scale=800:600 -c:v mpeg4 -vtag xvid -qscale:v \
       10 gartencam.avi

Pero con avconv esto no funciona. Creo que el problema es el selector de archivos %*.jpgy me pregunto si tengo la posibilidad de crear el vídeo sin modificar el nombre del archivo.

Si no, ¿conoces otra herramienta que funcione?

Respuesta1

Me temo que tienes razón en cuanto a que el error se debe al selector de archivos. Citando el manual:

      For creating a video from many images:

              avconv -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

      The syntax "foo-%03d.jpeg" specifies to use a decimal number composed of
      three digits padded with zeroes to express the sequence number. It is the
      same syntax supported by the C printf function, but only formats accepting a
      normal integer are suitable.

Si quieres puedes empezar con un número entero mayor que 0:

  -start_number start
  Specify the first number in the sequence

Realmente no es necesario cambiar el nombre: puede crear enlaces simbólicos con el lncomando, lo que ocuparía muy poco espacio en su disco.

Te aconsejo que hagas una copia de seguridad de tus imágenes antes de probar los scripts.

Puedes intentar utilizar este script bash:

#! /bin/bash
INPUTDIR="$1"
OUPUTDIR="$2"

SORTEDLIST="$(cd "$INPUTDIR" && ls -1 | sort -n)"

COUNT="$(echo -e "$SORTEDLIST"|wc -l)"
echo "Found $COUNT files"

ZEROES="$(echo -e "$COUNT"|wc -c)" # (will count \n)
echo "Using $ZEROES characters to display integers"

COUNTER="0"
for file in $SORTEDLIST; do
    ID="$(printf "%0${ZEROES}d" "$COUNTER")"

    echo "ln -s $INPUTDIR/$file $OUPUTDIR/$ID.jpg"
    ln -s "$INPUTDIR/$file" "$OUPUTDIR/$ID.jpg"

    COUNTER=$((COUNTER + 1))
done

Este script asume que todas tus imágenes están ubicadas dentro de un directorio que contiene solo las imágenes que deseas incluir en tu video. Para usarlo:

  • cree un directorio de salida que contendrá sus enlaces:mkdir output
  • ejecutalo./script.sh nameofthefoldercontainingyourimages output

información relacionada