020 Come usare FFmpeg per acquisire l’output di una webcam (integrata o USB)

27 Agosto, 2022 (16:04) | ffmpeg, Fotografia digitale, Linux, Video | By: sargonsei

020 Come usare FFmpeg per acquisire l’output di una webcam (integrata o USB)
A) Istruzioni da usare utilizzando unicamente FFmpeg
A1) Volendo usare FFmpeg per registrare ciò sta inquadrando la webcam integrata al computer, aprire un terminale ed impartire il comando
ffmpeg -i /dev/video0 vOutA1.mkv # Crea un video con l’output della webcam integrata.Per terminare la registrazione, digitare il tasto [Q] oppure digitare la combinazione di tasti [Control]+[C] oppure chiudere il terminale.

Volendo prefissare che il video INIZIA 10 secondi dopo che il comando è stato impartito, ed ha DURATA 2 minuti, impartire il comando seguente:
ffmpeg -i /dev/video0 -ss 00:00:10.00 -t 00:02:00.00 vOutA1t.mkv # Crea un video di 2 minuti contenente l’output della webcam iniziando a registrare 10 secondi dopo che il comando è stato impartito.
A2) Volendo usare FFmpeg per registrare l’audio del microfono integrato al computer, aprire un terminale ed impartire il comando
ffmpeg -f alsa -i default aOutA2alsa.mp3 # Registra audio microfono integrato.# oppure
ffmpeg -f pulse -i default aOutA2pulse.mp3 # Registra audio microfono integrato.Per terminare la registrazione, digitare il tasto [Q] oppure digitare la combinazione di tasti [Control]+[C] oppure chiudere il terminale.

A3) Volendo usare FFmpeg per registrare separatamente il video e l’audio delle periferiche (webcam e microfono) integrate al computer, aprire un terminale ed impartire il comando
ffmpeg -i /dev/video0 -an vOutA3alsa.mp4 -f alsa -i default aOutA4alsa.mp3 # Registra separatamente video ed audio di webcam e microfono integrati.# oppure
ffmpeg -i /dev/video0 -an vOutA3pulse.mp4 -f pulse -i default vOutA4pulse.mp3 # Registra separatamente video ed audio di webcam e microfono integrati.Per terminare la registrazione, digitare il tasto [Q] oppure digitare la combinazione di tasti [Control]+[C] oppure chiudere il terminale.

A4) Volendo usare FFmpeg per registrare il video e l’audio delle periferiche (webcam e microfono) integrate al computer, aprire un terminale ed impartire il comando
ffmpeg -i /dev/video0 -f alsa -i default vOutA4alsa.mp4 # Registra video ed audio webcam e microfono integrati.# oppure
ffmpeg -i /dev/video0 -f pulse -i default vOutA4pulse.mp4 # Registra video ed audio webcam e microfono integrati.Per terminare la registrazione, digitare il tasto [Q] oppure digitare la combinazione di tasti [Control]+[C] oppure chiudere il terminale.
Volendo prefissare che il video INIZIA 10 secondi dopo che il comando è stato impartito, ed ha DURATA 12 secondi, impartire il comando seguente:
ffmpeg -i /dev/video0 -f alsa -i default -ss 00:00:10.00 -t 00:00:12.00 vOutA4alsaT.mkv # video di 12 secondi contenente l’output della webcam e del microfono, iniziando a registrare 10 secondi dopo che il comando è stato impartito.
ATTENZIONE!!!
Webcam e microfono potrebbero NON essere sincronizzati fra loro;
di conseguenza, la registrazione video potrebbe mostrare un ritardo (e conseguente mancanza di sincronismo) di alcuni secondi rispetto all’audio.

A5) Volendo usare FFmpeg per registrare una immagine al secondo per 5 secondi di ciò che inquadra la webcam integrata al computer, aprire un terminale ed impartire il comando
ffmpeg -i /dev/video0 -r 1 -t 00:00:05 fotoOUT%3d.jpg # Crea, tramite la webcam integrata, una foto ogni secondo per 5 secondi e le mette in un file .jpg

A6) Volendo usare FFmpeg per registrare una immagine ogni 2 secondi (per 5 secondi iniziando dal terzo secondo) di ciò che inquadra la webcam integrata al computer, aprire un terminale ed impartire il comando
ffmpeg -i /dev/video0 -r 2 -ss 00:00:03 -t 00:00:05 fotoOUT%03d.png # Crea, tramite la webcam integrata, un fotogramma ogni secondo iniziando dal terzo secondo, e proseguendo per 5 secondi

B) Istruzioni per utilizzare FFmpeg assieme al pacchetto v4l2
Cose da sapere prima di cominciare.
1. I parametri dimensionali non specificati sono dedotti da FFmpeg in base alle caratteristiche dello schermo video in ingresso, mentre gli altri parametri (es. i codec) sono dedotti da FFmpeg in base all’estensione del video finale, tenendo conto di quali sono i parametri disponibili al momento della conversione. Di conseguenza, lo stesso comando potrebbe fornire output visivamente diversi, se utilizzato su computer diversi, ovvero se impartito prima o dopo un aggiornamento di FFmpeg.
2. Assicurarsi che il pacchetto v4l-utils sia installato. Se non lo è, installarlo.
sudo apt install v4l-utils # Installa il pacchetto v4l-utils e relative dipendenze.

1) Accertarsi di presenza e caratteristiche delle webcam connesse al computer.
A tal fine, aprire un terminale ed impartire il comando
v4l2-ctl --list-devices # Elenca le periferiche video connesse al PC
Nel mio PC, il comando suddetto identifica la webcam integrata /dev/video0 e la webcam USB /dev/video2

2) Per conoscere la lista dei formati supportati dalle 2 webcam, da terminale impartire i comandi
ffmpeg -f v4l2 -list_formats all -i /dev/video0 -hide_banner # Elenca risoluzioni e formati supportati da /dev/video0
ffmpeg -f v4l2 -list_formats all -i /dev/video2 -hide_banner # Elenca risoluzioni e formati supportati da /dev/video2
# Prendo atto dei rispettivi risultati:

[video4linux2,v4l2 @ 0x5592dce27280] Raw       :     yuyv422 :           YUYV 4:2:2 : 640x480 160x120 176x144 320x240 352x288
#
[video4linux2,v4l2 @ 0x5607cb74c280] Raw       :     yuyv422 :           YUYV 4:2:2 : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360 752x416 800x448 800x600 864x480 960x544 960x720 1024x576 1184x656 1280x720 1280x960
[video4linux2,v4l2 @ 0x5607cb74c280] Compressed:       mjpeg :          Motion-JPEG : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360 752x416 800x448 800x600 864x480 960x544 960x720 1024x576 1184x656 1280x720 1280x960

3) Per vedere cosa sta inquadrando una data webcam connessa al computer, avviare VLC e dal menù a tendina [Media]>[Apri periferica di acquisizione], selezionare il [Nome del dispositivo video] del quale si vuole vedere l’output e cliccare su [Riproduci], oppure aprire un terminale ed impartire il comando
ffplay -i /dev/video0 -video_size 320x240 # Visualizza l'output della webcam video0, con risoluzione: 320x240 pixels.
Per terminare la visualizzazione, digitare il tasto [Q] oppure digitare la combinazione di tasti [Control]+[C] oppure chiudere il terminale.

4) Per registrare ciò sta inquadrando una data webcam connessa al computer usando FFmpeg, aprire un terminale ed impartire il comando
ffmpeg -f v4l2 -i /dev/video0 -fs 1M -framerate 25 -video_size 640x480 vOUTfsWebcam.mkv # Registra l'output della webcam video0 finchè il video non raggiunge il peso di 1 MB, 25 fotogrammi al secondo, risoluzione: 640x480 pixels.# oppure
ffmpeg -f v4l2 -i /dev/video0 -t 20 -framerate 25 -video_size 640x480 vOUTtWebcam.mkv # Registra l'output della webcam video0 per 20 secondi, 25 fotogrammi al secondo, risoluzione: 640x480 pixels.

Per terminare la registrazione in anticipo, digitare il tasto [Q] oppure digitare la combinazione di tasti [Control]+[C] oppure chiudere il terminale.