J'ai beaucoup d'images (> 11.000) et je veux créer une vidéo avec avconv comme timelaps. Avec ffmpeg, j'ai fait l'affaire avec:
ffmpeg -r 25 -i "/mnt/stora/dahopi/Pictures/Gartencam/%*.jpg" \
-vf scale=800:600 -c:v mpeg4 -vtag xvid -qscale:v \
10 gartencam.avi
Mais avec avconv, cela ne fonctionne pas. Je pense que le problème est le sélecteur de fichiers %*.jpg
et je me demande si j'ai la possibilité de créer la vidéo sans modification du nom de fichier.
Sinon, connaissez-vous un autre outil pour faire l'affaire?
J'ai bien peur que vous ayez raison à propos de l'erreur due au sélecteur de fichiers. Citant le manuel:
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 vous le souhaitez, vous pouvez commencer à un entier supérieur à 0:
-start_number start Specify the first number in the sequence
Vous n'avez pas besoin de vraiment renommer: vous pouvez créer des liens symboliques avec la commande ln
, ce qui prendrait vraiment peu de place sur votre disque.
je vous conseille de faire une sauvegarde de vos photos avant d'essayer des scripts
Vous pouvez essayer d'utiliser ce 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
Ce script suppose que toutes vos images se trouvent dans un répertoire contenant uniquement les images que vous souhaitez inclure dans votre vidéo. Pour l'utiliser:
mkdir output
./script.sh nameofthefoldercontainingyourimages output