Comment convertir un fichier vidéo en séquence d'images, par exemple une image toutes les N secondes. Mplayer ou ffmpeg peuvent-ils le faire? J'ai utilisé MPlayer pour récupérer des captures d'écran manuellement, mais j'aimerais automatiser cela pour une longue vidéo.
71
Réponses:
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'images, utilisez simplement
myimage_%04d.png
ou similaire en tant que sortie. Le%0xd
bit est converti en un nombre entier avec zéro-paddedx
- l’exemple que j’ai donné est obtenu sous forme demyimage_0000.png
,myimage_0001.png
,myimage_0002.png
etc..
Vous pouvez utiliser de nombreux formats d'images fixes, png, jpeg, tga, peu importe (voir la
ffmpeg -formats
liste complète).Ok, nous savons maintenant comment exporter le film sous la forme d'une séquence d'images, mais ne voulons-nous pas exporter chaque image?
L'astuce consiste simplement à changer la cadence de la sortie en tout ce que nous voulons en utilisant l'
-r n
option oùn
est le nombre d'images par seconde. Une image par seconde serait-r 1
, une image toutes les quatre secondes-r 0.25
, une image toutes les dix secondes-r 0.1
et ainsi de suite.Donc pour résumer, voici comment il serait possible d’économiser une image
input.mov
toutes les quatre secondesoutput_0000.png
,output_0001.png
etc.:Notez que l'
-r 0.25
option va après la-i input.mov
partie, car elle contrôle le taux de trame de la sortie . Si vous le mettez avant l'entrée, le fichier d'entrée sera traité comme s'il avait la fréquence d'images spécifiée.Remplacez le% xd par le nombre de chiffres requis, 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 une séquence d'images. Lire la suite ici .Utilisateurs Windows : utilisation en ligne de commande
%
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, double
%%
dans les scripts, et simple%
sur la ligne de commande interactive. Se tromper dans les deux cas générera une erreur.la source
-r
si je veux exporter chaque image? Si je connais le FPS de la vidéo, je suppose que je le sais, mais si je ne le savais pas?jpegs
pour cela, à moins que vous ne soyez sûrpng
de ce que vous voulez. Dans mon cas,jpeg
s mesuraient environ 50 kb chacun, etpng
s environ 2 Mo.-q:v 1
c'est une option très utile ici, comme dans superuser.com/questions/318845/…enregistrera une image au format 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, recherchez la durée de la vidéo en secondes, en utilisant un autre lecteur ou avec mplayer:
et cherchez une ligne du type "ID_LENGTH = 147.00".
Soustrayez 2 de la longueur et utilisez cette valeur pour l'
-endpos
option. Par exemple, pour une vidéo de 147 secondes:la source
mpv --vo=image --sstep=5 movie.mkv
fonctionne très bien sans le bogue susmentionné ( mpv est un fork de mplayer) utilisant mpv 0.27.0 sur Debian.Avec
ffmpeg
, vous pouvez faire ce qui suit:Cette commande génère une miniature JPG de taille 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 vignette toutes les X secondes de la vidéo
la source
-ss position
drapeau pour rechercher davantage dans le fichier?-ss Seek to given time position in seconds. hh:mm:ss[.xxx] syntax is also supported
-ss
avant le-i
pour que la recherche se produise avant que la vidéo d'entrée soit décodée. cela devrait accélérer. sourceSi vous recherchez une sorte de feuille de contact et si vous utilisez un système d'exploitation de type Unix, vous pouvez utiliser ce script élaboré, appelé Point de contact vidéo * NIX , short vcs .
En arrière-plan, il utilise également
ffmpeg
(par défaut) oumplayer
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 les différences de temps qui les séparent.Pour un intervalle de 10 minutes, l'invocation est la suivante:
Consultez la liste complète des options en ligne de commande pour d’autres réglages.
Voici un exemple de fiche de contact tiré de la page d'accueil :
la source
Avec VLC 1.1.0 et les versions ultérieures, vous pouvez utiliser le filtre de scènes vidéo:
Ce qui précède enregistre 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 aucun plugin vidéo ou logiciel supplémentaire).
Documentation complète: http://wiki.videolan.org/How_to_create_thumbnails
la source
VirtualDub peut le faire pour vous
File
->Export
->Image sequence
la source
Vous pouvez aussi essayer ceci
Source de ci-dessus
la source
Vous pouvez ignorer des images dans VirtualDub. Il suffit d’utiliser l’option "Decimate By" située dans le menu Video -> Frame Rate. Par exemple, si vous définissez "Décimer par 100" puis utilisez Fichier -> Exporter -> Séquence d'images, cela n'enregistrera que toutes les 100 images.
la source