Per estrarre tutti i frame senza perdita di qualità, utilizzare
ffmpeg -i "$input_file" -f image2 "outdir/%05d.png"
Se si preferisce un formato di output diverso, basta cambiare .png
; per impostazione predefinita, ffmpeg
dedurrà il tipo di file dall'estensione.
L'opzione -f image2
dice ffmpeg
di scrivere una serie di immagini. Lo "outdir/%05d.png"
fornisce uno schema di nome file, in questo caso "5-digit frame number.png
".
Se si desidera solo per estrarre n fotogrammi al secondo, aggiungere l'opzione -r n
dopo "$input_file"
. (Credo n può essere in virgola mobile.)
Nel caso in cui il video è Motion JPEG (MJPEG), invece utilizzare:
ffmpeg -i "$input_file" -vcodec copy -f image2 "outdir/%05d.jpg"
Questo decomprime i fotogrammi direttamente dal flusso video, che è più veloce e ovviamente usa meno spazio su disco.
Per ulteriori informazioni/altre opzioni, consultare la pagina man o the documentation (cercare image2
).
fonte
2011-09-19 04:04:36
La risposta attuale di Don Reba è buona e la accetterò a meno che qualcuno non ne fornisca una più approfondita. Chiaramente posso solo guardare il codice sorgente di ffmpeg per vedere i dettagli, ma se c'è un riferimento che è più facile da leggere rispetto al codice sorgente che sarebbe apprezzato. Inoltre, c'è qualche libreria in Java che fa questo? –