È molto semplice con ffmpeg, e può produrre un fotogramma ogni N secondi senza script extra. Per esportare come sequenza di immagini basta usare myimage_%04d.png
o simili come output. Il bit %0xd
è convertito in un intero con zero cifre lunghe x
- l'esempio che ho dato ottiene un output come
myimage_0000.png
,
myimage_0001.png
,
myimage_0002.png
Si possono usare molti formati di immagini fisse, png, jpeg, tga, qualsiasi cosa (vedi ffmpeg -formats
per una lista completa).
Ok quindi ora sappiamo come esportare il filmato come una sequenza di immagini, ma diciamo che non vogliamo esportare ogni singolo fotogramma?
Il trucco è semplicemente cambiare il frame rate dell'output a quello che vogliamo usando l'opzione -r n
dove n
è il numero di fotogrammi al secondo. 1 frame al secondo sarebbe -r 1
, un frame ogni quattro secondi sarebbe -r 0.25
, un frame ogni dieci secondi sarebbe -r 0.1
e così via.
Quindi, per mettere tutto insieme, ecco come sarebbe salvare un fotogramma di input.mov
ogni quattro secondi a output_0000.png
, output_0001.png
ecc.:
ffmpeg -i input.mov -r 0.25 output_%04d.png
Nota che l'opzione -r 0.25
va dopo la parte -i input.mov
, perché sta controllando il frame rate dell’output. Se la metti prima dell'input, tratterebbe il file di input come se avesse il frame rate specificato.
Cambia il %xd in quante cifre ti servono, ad esempio se il comando creerà più di 10.000 fotogrammi cambia lo %04d
in %05d
. Questo funziona anche per i file di input che sono sequenze di immagini. Leggi di più qui .
Utenti Windows : Sulla linea di comando usa %
esempio: ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png
Negli script CMD e BAT usa %%
esempio: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png
Quindi doppio %%
negli script, e singolo %
sulla linea di comando interattiva. Sbagliare in entrambe le situazioni genererà un errore.