Comment extraire des images d'un fichier vidéo?

Réponses:

20

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 1extraire 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.
YoMismo
la source
1
votre lien semble être rompu
Nolwennig
@Nolwennig. Fixé, pas aussi spécifique que le précédent mais au moins est la documentation officielle et à peine cassé.
YoMismo
3
-r 1est 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].
Sandburg
Merci, fonctionne bien sur Xubuntu
Indacochea Wachín
3

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.

Florence Taylor
la source
0

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
À M
la source
0

Dans VLC, vous pouvez cliquer avec le bouton droit, Vidéo, Prendre un instantané

user375835
la source
Cela semble un peu laborieux si l'on a besoin d'images par exemple pour chaque image de la scène.
Kusalananda