![So erstellen Sie ein Video aus Bildern mit dem Dateinamen yyyy-MM-dd:HH:mm:ss](https://rvso.com/image/885977/So%20erstellen%20Sie%20ein%20Video%20aus%20Bildern%20mit%20dem%20Dateinamen%20yyyy-MM-dd%3AHH%3Amm%3Ass.png)
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 %*.jpg
und 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 ln
Befehl 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