>> Tecnologia elettronica >  >> Telecamere >> Action cam

Come posso usare FFMPEG per catturare uno screenshot dal file video?

FFMPEG offre diversi modi per acquisire schermate da un file video. Ecco i metodi più comuni e versatili:

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.

  1. Videosorveglianza nelle scuole
  2. Quanto tempo richiede il montaggio video?
  3. Come risolvere il rumore su un Super 8 Tape
  4. Come caricare un Insignia NS- 720P
  5. Come si fa a realizzare un video sullo schermo senza scaricare NIENTE?
  6. Quanto costa una videocamera hd?