Come posso usare FFMPEG per catturare uno screenshot dal file video?
Metodo 1:usando `-vf` (filtro video)` scala` e `select`
Questo metodo è altamente flessibile, consentendo di specificare il timestamp, la dimensione dell'uscita e persino selezionare frame specifici in base a criteri.
`` `Bash
ffmpeg -i input.mp4 -vf "select ='eq (n, 10)', scala =640:-1" -frame:v 1 output.png
`` `
* `-i input.mp4`:specifica il file video di input. Sostituisci `input.mp4` con il nome del file video.
* `-vf" Select ='eq (n, 10)', scala =640:-1 "`:questa è la catena del filtro video.
* `select ='eq (n, 10)' ':seleziona l'undicesima frame (N inizia da 0). Cambia `10` per selezionare un frame diverso. Puoi usare espressioni più complesse qui, ad esempio, `Select ='GTE (T, 10)'` Seleziona i frame da 10 secondi in poi.
* `Scala =640:-1`:ridimensiona il telaio su 640 pixel largo mantenendo le proporzioni. `-1` calcola automaticamente l'altezza. È possibile specificare sia la larghezza che l'altezza, se necessario (ad esempio, `scala =640:480`).
* `-Frames:V 1`:dice a ffmpeg di produrre solo un frame.
* `output.png`:specifica il file PNG di output. È possibile utilizzare altri formati di immagine come JPEG (`output.jpg`).
Metodo 2:usando `-vf` (filtro video)` thumbnail`
Questo metodo è più semplice per afferrare una singola miniatura in un tempo o una percentuale specifica della durata del video.
`` `Bash
FFMPEG -I input.mp4 -vf Mintea -frame:v 1 output.png
`` `
Questo prenderà una miniatura da circa il centro del video. Per specificare un tempo preciso:
`` `Bash
ffmpeg -i input.mp4 -vf "miniatura, setpts =pts -startpts" -ss 10 -frame:v 1 output.png
`` `
* `-SS 10`:cerca 10 secondi nel video * prima di catturare la miniatura. Questo è generalmente più efficiente rispetto all'utilizzo di `Select` per un tempo specifico.
Metodo 3:usando `-vf` (filtro video) e` fps` per più screenshot
Per catturare più schermate a intervalli regolari:
`` `Bash
ffmpeg -i input.mp4 -vf fps =1/5 output%03d.png
`` `
Questo creerà schermate ogni 5 secondi (1 frame al secondo, o 1/5 fps), numerato `output001.png`,` output002.png` e così via.
Considerazioni importanti:
* `-ss` Posizionamento: Posizionando `-ss` * prima di *` -i` eseguirà una ricerca più veloce (cerca nel file di input). Posizionarlo dopo `-i` decodificherò l'intero video fino al punto di ricerca ed è più lento, ma può essere più accurato per alcuni formati video.
* Frame rate: Il numero di frame effettivo potrebbe non corrispondere perfettamente al timecode a causa delle variazioni delle velocità dei frame video.
* Formati di file: È possibile modificare l'estensione del file di output in `.jpg`,` .jpeg`, `.bmp`, ecc., Per utilizzare diversi formati di immagine.
Ricorda di sostituire `input.mp4` e` output.png` con i nomi dei file effettivi. Scegli il metodo che si adatta meglio alle tue esigenze e regola i parametri di conseguenza. Il primo metodo offre il massimo controllo, mentre gli altri sono più veloci per compiti più semplici.