È 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.