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 -rn
où n
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 :
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
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.