2010-04-27 10:05:36 +0000 2010-04-27 10:05:36 +0000
72
72

Comment extraire une image d'une vidéo toutes les N secondes ?

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

Réponses (8)

73
73
73
2014-03-15 09:47:20 +0000

C'est très simple avec ffmpeg, et il peut produire une image toutes les N secondes sans script supplémentaire. Pour exporter sous forme de séquence d'images, il suffit d'utiliser `myimage%04d.pngou similaire comme sortie. Le bit%0xdest converti en un nombre entier à zéro chiffresx` - l'exemple que j'ai donné donne comme résultat

  • myimage_0000.png,
  • myimage_0001.png,
  • myimage_0002.png

Vous pouvez utiliser de nombreux formats d'images fixes, png, jpeg, tga, etc (voir ffmpeg -formats pour une liste complète).

Ok donc maintenant nous savons comment exporter le film en tant que séquence d'images, mais disons que nous ne voulons pas exporter chaque image individuelle

L'astuce est de changer simplement la fréquence d'images de la sortie à ce que nous voulons en utilisant l'option -r nn est le nombre d'images par seconde. Une 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 à quoi ressemblerait la sauvegarde d'une image de input.mov toutes les quatre secondes en output_0000.png, output_0001.png etc. :

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

Notez que l'option -r 0.25 va après la partie -i input.mov, car elle contrôle la fréquence d'images de la sortie. Si vous la mettez avant l'entrée, elle traitera le fichier d'entrée comme s'il avait la fréquence d'images spécifiée.

Changez le %xd en autant de chiffres que vous voulez, par exemple si la commande crée plus de 10 000 images, changez le %04d en %05d. Cela fonctionne également pour les fichiers d'entrée qui sont des séquences d'images. Pour en savoir plus ici .

Utilisateurs Windows : En 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

Donc, doublez %% dans les scripts, et utilisez simplement % sur la ligne de commande interactive. Si vous vous trompez dans l'une ou l'autre de ces situations, une erreur sera générée.

28
28
28
2010-04-28 10:08:07 +0000
mplayer -vo jpeg -sstep 5 file.avi

enregistrera une image 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 secondes, en utilisant un autre lecteur, ou avec mplayer :

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

et cherchez une ligne comme “ID_LENGTH=147.00”.

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

mplayer -vo jpeg -sstep 5 -endpos 145 file.avi
11
11
11
2010-04-27 11:41:07 +0000

Avec ffmpeg , vous pouvez faire ce qui suit :

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

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

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

8
8
8
2013-06-04 08:15:55 +0000

Si vous cherchez une sorte de feuille de contact et si vous travaillez avec un système d'exploitation de type Unix, vous pouvez utiliser ce script élaboré, appelé [ Video Contact Sheet ]*NIX , short vcs ](http://p.outlyer.net/vcs).

En arrière-plan, il utilise également ffmpeg (par défaut) ou mplayer, et peut donc gérer de nombreux formats vidéo. Il automatise le processus de capture des images fixes du film et les compose en une image avec un en-tête et un pied de page. Vous pouvez par exemple choisir le nombre de captures que vous souhaitez ou le décalage horaire 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 la ligne de commande pour d'autres réglages.

Voici un exemple de fiche de contact, extrait de la page d'accueil :

7
7
7
2012-09-11 03:17:14 +0000

Avec VLC 1.1.0 et supérieur, vous pouvez utiliser le filtre vidéo de 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

Le ci-dessus sauvegarde 1 image sur 24 (–scene-ratio=24), commençant à 00:00:10 et se terminant à 00:00:11.

Je viens de tester et de confirmer que cela fonctionne avec VLC 2.0.3 sur une nouvelle installation de Windows 8 (je n'ai pas de plugins vidéo ou de logiciels supplémentaires).

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

2
2
2
2010-04-27 10:13:07 +0000

VirtualDub peut le faire pour vous

File -> Export -> Image sequence

1
1
1
2010-04-27 16:22:46 +0000

Vous pouvez aussi essayer ce

depuis la ligne de commande du VLC…

vlc “C:\YOUR\file\path\file.avi” -V image –image-out-prefix=capname –image-out-ratio=60

fichier. avi est la vidéo que vous voulez capturer, capname est le préfixe des images sauvegardées, vous pouvez jouer avec le ratio (60 signifie que 1 image sur 60 est capturée) Vous pouvez ajouter d'autres commandes, par exemple –image-out-format jpeg va enregistrer vos majuscules en jpegs au lieu de pngs, –snapshot-path vous permet de choisir où enregistrer vos majuscules. Source de ci-dessus

1
1
1
2011-11-30 22:06:24 +0000

Vous pouvez sauter des images dans VirtualDub. Il suffit d'utiliser l'option “Décimer par” située dans le menu Vidéo -> Fréquence d'images. Par exemple, si vous définissez “Décimer par 100” puis utilisez Fichier -> Exporter -> Séquence d'images, il n'enregistrera que toutes les 100 images.