So erstellen Sie ein Video aus Bildern mit dem Dateinamen yyyy-MM-dd:HH:mm:ss

So erstellen Sie ein Video aus Bildern mit dem Dateinamen yyyy-MM-dd:HH:mm:ss

Ich habe viele Bilder (>11.000) und möchte mit avconv ein Video als Zeitraffer erstellen. Mit ffmpeg habe ich den Trick gemacht mit:

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

Aber mit avconv funktioniert das nicht. Ich denke, das Problem liegt am Dateiselektor %*.jpgund ich frage mich, ob ich eine Chance habe, das Video zu erstellen, ohne den Dateinamen zu ändern.

Wenn nicht, kennen Sie ein anderes Tool, mit dem sich der Trick bewerkstelligen lässt?

Antwort1

Ich fürchte, Sie haben Recht, dass der Fehler auf den Dateiwähler zurückzuführen ist. Zitat aus dem Handbuch:

      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.

Wenn Sie möchten, können Sie mit einer Ganzzahl größer als 0 beginnen:

  -start_number start
  Specify the first number in the sequence

Sie müssen nicht wirklich umbenennen: Sie können mit dem lnBefehl symbolische Links erstellen, die nur sehr wenig Platz auf Ihrer Festplatte beanspruchen.

Ich rate Ihnen, eine Sicherungskopie Ihrer Bilder zu erstellen, bevor Sie Skripte ausprobieren

Sie können versuchen, dieses Bash-Skript zu verwenden:

#! /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

Dieses Skript geht davon aus, dass sich alle Ihre Bilder in einem Verzeichnis befinden, das nur die Bilder enthält, die Sie in Ihr Video einbinden möchten. So verwenden Sie es:

  • Erstellen Sie ein Ausgabeverzeichnis, das Ihre Links enthält:mkdir output
  • Führ es aus./script.sh nameofthefoldercontainingyourimages output

verwandte Informationen