Je veux dire, comment générer des fichiers d'images à partir d'une vidéo comme des captures d'écran.
Je veux dire, comment générer des fichiers d'images à partir d'une vidéo comme des captures d'écran.
Réponses:
Essayez avec ffmpeg
ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg
Vous pouvez lire la documentation ici
-i inputfile.avi
Le fichier d'entrée vidéo est inputfile.avi-r 1
extraire 1 image par seconde de vidéo. Remplacez ce nombre par le nombre d'images que vous souhaitez obtenir par seconde.-f image2
forcer le format de sortie d'image, vous pourrez probablement l'omettre car le programme essaie de choisir le format d'image de sortie à partir de l'extension de fichier.image-%3d.jpeg
nom des images de sortie, le% 3d indique que les images générées en sortie auront un numéro de séquence de 3 décimales, si vous voulez que le nombre soit rempli de zéros, vous avez juste besoin d'utiliser% 03d.-r 1
est pour le nombre d'images par seconde. Donc pour 60ips, ou 24, c'est -r 24
. Et pour limiter l'extrait, c'est -ss [start] -t [duration]
.
Je viens de télécharger la dernière version de VLC pour Windows 32 - 2.1.2 Rincevent et cela fonctionne très bien.
Pas:
1 - Cliquez sur Outils> Préférences et cliquez sur le bouton radio Tout
2 - Faites défiler vers le bas et cliquez sur le signe + à côté de Vidéo pour développer
3 - Faites défiler vers le bas et cliquez sur Filtre de scène et remplissez les informations pour le préfixe du chemin de répertoire (où vous souhaitez enregistrer les images). Ne cliquez pas sur Enregistrer.
4 - Faites défiler vers le haut et cliquez sur le mot Vidéo sous Filtres
5 - Cochez la case du filtre vidéo de scène et cliquez sur Enregistrer.
6 - Ouvrez et exécutez une vidéo et elle enregistrera les .png
7 - Pour arrêter l'enregistrement des images, revenez à l'étape 5 et décochez Filtre vidéo de scène. Facile vraiment une fois que vous savez où trouver les paramètres.
J'espère que cette aide
#!/bin/bash
source_dir="."
output_dir="."
input_file_types=(avi wmv flv mkv mpg mp4)
output_file_type="jpg"
convert() {
echo "" | ffmpeg -ss $ss -y -i "$in_file" -an -f image2 -vframes 1 "$output_dir/$out_file"
}
for input_file_types in "${input_file_types[@]}"
do
find "$source_dir" -name "*.$input_file_types" -print0 | while IFS= read -r -d $'\0' in_file
do
echo "Processing…"
echo ">Input "$in_file
# Replace the file type
out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_types/\1$output_file_type/g")
echo ">Output "$out_file
# get video duration
# fulltime=`ffmpeg -i "$in_file" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//`;
# hour=`echo $fulltime | cut -d ':' -f 1`;
# minute=`echo $fulltime | cut -d ':' -f 2`;
# second=`echo $fulltime | cut -d ':' -f 3 | cut -d '.' -f 1`;
# seconds=`expr 3600 \* $hour + 60 \* $minute + $second`;
# ss=`expr $seconds / 2`; # from the middle of video
ss=`expr 10`; # from the 10sec of video
# Convert the file
convert "$in_file" "$out_file"
if [ $? != 0 ]
then
echo "$in_file had problems" >> ffmpeg-errors.log
fi
echo ">Finished "$out_file "\n\n"
done
done
Dans VLC, vous pouvez cliquer avec le bouton droit, Vidéo, Prendre un instantané