Comment convertir la vidéo en images?

Comment puis-je convertir un fichier vidéo en une séquence d'images, par exemple une image toutes les N secondes. Mplayer ou ffmpeg peuvent-ils faire cela? J'ai utilisé MPlayer pour capturer des captures d'écran manuellement mais j'aimerais l'automatiser pour une longue vidéo.

C'est très simple avec ffmpeg, et il peut sortir une image toutes les N secondes sans script supplémentaire. Pour exporter en tant que séquence d'image, utilisez simplement myimage_%04d.png ou similaire à la sortie. Le bit %0xd est converti en un nombre entier zéro-rempli x chiffres long – l'exemple que j'ai donné obtient la sortie myimage_0000.png myimage_0001.png etc. Vous pouvez utiliser beaucoup de formats d'images fixes, png, jpeg, tga, quelle que soit (voir ffmpeg -formats pour une liste complète).

Ok afin d'exporter en tant que séquence d'image, nous pouvons utiliser un format d'image comme sortie avec un nom de fichier séquentiel, mais nous ne voulons pas exporter chaque image. Donc, modifiez simplement la fréquence d'images de la sortie à tout ce que nous voulons en utilisant l'option -rnn est le nombre d'images par seconde. 1 image par seconde serait -r 1 , une image toutes les quatre secondes serait -r 0.25 , une image toutes les dix secondes serait -r 0.1 et ainsi de suite.

Donc, pour mettre tout cela ensemble, voici comment il semblerait sauvegarder un cadre de input.mov toutes les quatre secondes à output_0000.png, output_0001.png etc .:

 ffmpeg -i input.mov -r 0.25 output_%04d.png 

Changez le% xd à plusieurs chiffres dont vous avez besoin, par exemple, si la commande crée plus de 10 000 images, modifiez %04d à %05d . Cela fonctionne également pour les fichiers d'entrée qui sont une séquence d'image. Lire la suite ici .

Utilisateurs de Windows: sur la ligne de commande, utilisez %

Exemple: ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png

Dans les scripts CMD et BAT, utilisez %%

Exemple: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png

N'utilisez pas un seul % dans les scripts et n'utilisez pas %% dans la ligne de commande. Les deux situations généreront une erreur.

 mplayer -vo jpeg -sstep 5 file.avi 

Sauvegardera un cadre sous forme de fichier jpeg toutes les 5 secondes.

Cependant, il ne s'arrêtera pas à la fin du fichier, il continuera à produire des copies de la dernière image. Pour éviter cela, trouvez la durée de la vidéo en quelques secondes, utilisez un autre joueur ou avec mplayer:

 mplayer -vo null -ao null -frames 0 -identify file.avi 

Et recherchez une ligne comme "ID_LENGTH = 147.00".

Soustraire 2 de la longueur et utiliser cette valeur pour l'option -endpos . Par exemple, pour une vidéo de 147 secondes:

 mplayer -vo jpeg -sstep 5 -endpos 145 file.avi 

Avec ffmpeg , vous pouvez effectuer les opérations suivantes:

 ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg 

Cette commande génère une vignette JPG de taille 320 × 240 à la 4ème seconde dans la vidéo. Mettez cela dans un script qui modifie l'heure et le nom du fichier et que vous avez terminé.

Plus d'informations: Créez une image miniature toutes les X secondes de la vidéo

Si vous êtes après une sorte de feuille de contact et si vous travaillez avec un système d'exploitation compatible avec Unix, vous pouvez utiliser ce script élaboré, appelé au point Fiche de contact vidéo * NIX , vcs courts .

En arrière-plan, il utilise également ffmpeg (par défaut) ou mplayer , donc peut gérer beaucoup de formats vidéo. Il automatise le processus de capture d'images fixes du film et de les composer sur une image avec un en-tête et un pied de page. Vous pouvez choisir par exemple le nombre de captures que vous voulez ou encore les différences de temps entre elles.

Pour un intervalle de 10 minutes, l'invocation est comme ça:

 vcs -i 10m input.avi 

Vérifiez la liste complète des options de ligne de commande pour d'autres réglages.

Voici une fiche de contact d'exemple, tirée de la page d'accueil :

Entrez la description de l'image ici

Avec VLC 1.1.0 et versions supérieures, vous pouvez utiliser le filtre vidéo scène:

 vlc C:\video\to\process.mp4 --rate=1 --video-filter=scene --vout=dummy --start-time=10 --stop-time=11 --scene-format=png --scene-ratio=24 --scene-prefix=snap --scene-path=C:\path\for\snapshots\ vlc://quit 

Ce qui précède sauvegarde 1 sur 24 images (–ccès-ratio = 24), à partir de 00:00:10 et se terminant à 00:00:11.

Juste testé et confirmé, cela fonctionne avec VLC 2.0.3 sur une nouvelle installation Windows 8 (je n'ai pas de plugins ou de logiciels vidéo supplémentaires).

Documentation complète: http://wiki.videolan.org/How_to_create_thumbnails

VirtualDub peut faire cela pour vous

File -> Export -> Image sequence

Entrez la description de l'image ici

Vous pourriez également essayer ceci

À partir de la ligne de commande VLC …

Vlc "C: \ YOUR \ file \ path \ file.avi" -V image –image-out-prefix = capname –image-out-ratio = 60

File.avi est la vidéo que vous voulez capturer, capname est le préfixe des images enregistrées, vous pouvez jouer avec le ratio (60 signifie que 1 sur 60 images est capturée) Vous pouvez ajouter d'autres commandes, par exemple –image-out-format jpeg va sauvegarder vos caps sous jpegs au lieu de pngs, –snapshot-path vous permet de choisir l'endroit où vous souhaitez enregistrer vos capsules.

Source ci-dessus

Vous pouvez ignorer les images dans VirtualDub. Utilisez simplement l'option "Decimate By" située dans le menu Video -> Frame Rate. Par exemple, si vous définissez "Decimate By 100" puis utilisez File -> Export -> séquence d'image, il sauvegardera uniquement chaque 100ième image.