FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Installazione, configurazione e utilizzo di applicativi multimediali, masterizzazione, acquisizione e codec audio/video, streaming e altro.
Scrivi risposta
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2562
Iscrizione: domenica 17 febbraio 2008, 13:56

FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Sargonsei »

Salve a tutti.
Ho verificato che, singolarmente, i comandi

Codice: Seleziona tutto

ffplay -i /dev/video0 -video_size 640x480 # Visualizza l'output della USBCAM, con risoluzione: 640x480 pixels
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 USBCAM iniziando a registrare 10 secondi dopo che il comando è stato impartito.
funzionano perfettamente, ma non è possibile impartirli su due terminali diversi per vedere quello che si registra.
Esiste un comando di FFMpeg che permetta contemporaneamente sia di registrare un video, sia di vedere quello che si sta registrando?
Ringrazio sin d'ora chi mi aiuterà.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 406
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Lucio C »

Non conoscevo tali comandi ... li ho provati (con &) e NON vanno in background.
Ma il motivo non pare l'output a terminale, ma il fatto che se gira uno l'altro dice "device busy" (quindi mette un lock esclusivo)

Le poche volte che ho dovuto registrare una presentazione (piu' che il video della mia brutta faccia mi interessava l'audio e le slide) ho usato OBS Studio (non che lo padroneggi, come in genere qualsiasi cosa di multimediale)

Ho fatto una rapida ricerca in rete per "ffmpeg and ffplay at same time" ma non trovo nulla. C'e' un esempio in cui si manda l'output di ffmpeg su - e lo si pipa in ffplay ma non l'inverso. Passo.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
Hackecattivo
Prode Principiante
Messaggi: 118
Iscrizione: giovedì 9 marzo 2023, 0:12
Desktop: Ubuntu
Distribuzione: Ubuntu
Sesso: Maschile

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Hackecattivo »

Sargonsei ha scritto:
ieri, 19:14
Salve a tutti.
Ho verificato che, singolarmente, i comandi

Codice: Seleziona tutto

ffplay -i /dev/video0 -video_size 640x480 # Visualizza l'output della USBCAM, con risoluzione: 640x480 pixels
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 USBCAM iniziando a registrare 10 secondi dopo che il comando è stato impartito.
funzionano perfettamente, ma non è possibile impartirli su due terminali diversi per vedere quello che si registra.
Esiste un comando di FFMpeg che permetta contemporaneamente sia di registrare un video, sia di vedere quello che si sta registrando?
Ringrazio sin d'ora chi mi aiuterà.


Per il secondo comando prova cosi;

Codice: Seleziona tutto

ffmpeg -i /dev/video0 -ss 00:00:10.00 -t 00:02:00.00 -video_size 640x480 vOutA1t.mkv
Avatar utente
trekfan1
Moderatore Globale
Moderatore Globale
Messaggi: 23550
Iscrizione: domenica 21 maggio 2006, 10:51
Desktop: Gnome
Distribuzione: Ubuntu 23.10 e 24.04 (dev)
Sesso: Maschile
Località: Formigine (MO) | Accecante Asceta

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da trekfan1 »

Esiste OBS che permette di fare quello che chiedi usando una interfaccia grafica

Codice: Seleziona tutto

sudo apt install obs-studio
oppure tramite ppa se vuoi l'ultima versione https://obsproject.com/download
Avatar utente
danilo_g
Prode Principiante
Messaggi: 92
Iscrizione: giovedì 6 giugno 2024, 13:02
Desktop: BoiaDE
Distribuzione: LollOS
Località: Memeland

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da danilo_g »

trekfan1 ha scritto:
oggi, 6:11
Esiste OBS che permette di fare quello che chiedi usando una interfaccia grafica

Codice: Seleziona tutto

sudo apt install obs-studio
oppure tramite ppa se vuoi l'ultima versione https://obsproject.com/download
Oppure Flatpak:
https://flathub.org/apps/com.obsproject.Studio
Resistance is futile, you will be garbage collected.
«Le opinioni sono come i buchi del c*lo, tutti ne hanno uno.» :gh:
Whatever is the way. ¯\_(ツ)_/¯
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2562
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Sargonsei »

Hackecattivo ha scritto:
oggi, 1:36
Sargonsei ha scritto:
ieri, 19:14
Salve a tutti.
Ho verificato che, singolarmente, i comandi

Codice: Seleziona tutto

ffplay -i /dev/video0 -video_size 640x480 # Visualizza l'output della USBCAM, con risoluzione: 640x480 pixels
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 USBCAM iniziando a registrare 10 secondi dopo che il comando è stato impartito.
funzionano perfettamente, ma non è possibile impartirli su due terminali diversi per vedere quello che si registra.
Esiste un comando di FFMpeg che permetta contemporaneamente sia di registrare un video, sia di vedere quello che si sta registrando?
Ringrazio sin d'ora chi mi aiuterà.


Per il secondo comando prova cosi;

Codice: Seleziona tutto

ffmpeg -i /dev/video0 -ss 00:00:10.00 -t 00:02:00.00 -video_size 640x480 vOutA1t.mkv

Codice: Seleziona tutto

$ ffmpeg -i /dev/video0 -ss 00:00:10.00 -t 00:02:00.00 -video_size 640x480 vOutA1t.mkv
ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.2.0-23ubuntu3)
  configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
[in#0 @ 0x64d7c89f22c0] Error opening input: Device or resource busy
Error opening input file /dev/video0.
Error opening input files: Device or resource busy
non funziona.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2562
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Sargonsei »

@ trekfan1
@ danilo_g
Non escludo l'uso di una GUI per ottenere il risultato cercato, tuttavia prima vorrei poter fare da riga di comando.
- - -
edit
Nel frattempo, mi sono imbattuto nella pagina
https://stackoverflow.com/questions/460 ... -same-time
ed ho verificato che il comando

Codice: Seleziona tutto

ffmpeg -i /dev/video0 -c:v copy -c:a copy -f matroska - vOut01.mkv | ffplay -i -
fa qualcosa di molto simile a quello che vorrei fare io ma, se imposto inizio, durata, e/o risoluzione, non vedo l'anteprima.
Capita solo a me?
Ultima modifica di Sargonsei il venerdì 16 agosto 2024, 16:18, modificato 1 volta in totale.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
caturen
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 18104
Iscrizione: giovedì 8 aprile 2010, 18:41
Desktop: diversi
Distribuzione: debian

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da caturen »

Ultima modifica di caturen il venerdì 16 agosto 2024, 16:19, modificato 1 volta in totale.
Avatar utente
OMBRA_Linux
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2764
Iscrizione: mercoledì 18 febbraio 2015, 14:24
Desktop: HP / Lenovo / Samsung
Distribuzione: Android / Linux / Windows10-11
Sesso: Maschile
Località: Napoli

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da OMBRA_Linux »

Hai provato con:

Codice: Seleziona tutto

sudo ffmpeg -i /dev/video0 -ss 00:00:10.00 -t 00:02:00.00 -video_size 640x480 vOutA1t.mkv
Se per vivere devi strisciare, alzati e muori.
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2562
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Sargonsei »

OMBRA_Linux ha scritto:
oggi, 16:17
Hai provato con:

Codice: Seleziona tutto

sudo ffmpeg -i /dev/video0 -ss 00:00:10.00 -t 00:02:00.00 -video_size 640x480 vOutA1t.mkv
Sul mio computer non compare nessuna anteprima di quello che si registra.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2562
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Sargonsei »

Codice: Seleziona tutto

gst-launch v4l2src ! ffmpegcolorspace ! jpegenc ! avimux ! filesink location=output.avi
gst-launch: comando non trovato
Ma potrei non aver notato ciò che tu volevi farmi notare...
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Avatar utente
OMBRA_Linux
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2764
Iscrizione: mercoledì 18 febbraio 2015, 14:24
Desktop: HP / Lenovo / Samsung
Distribuzione: Android / Linux / Windows10-11
Sesso: Maschile
Località: Napoli

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da OMBRA_Linux »

Lancia questo comando e posta ciò che viene fuori.

Codice: Seleziona tutto

lsof /dev/video0
Se per vivere devi strisciare, alzati e muori.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 406
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Lucio C »

Sargonsei ha scritto:
oggi, 15:16
ed ho verificato che il comando

Codice: Seleziona tutto

ffmpeg -i /dev/video0 -c:v copy -c:a copy -f matroska - vOut01.mkv | ffplay -i -
fa qualcosa di molto simile a quello che vorrei fare io ma, se imposto inizio, durata, e/o risoluzione, non vedo l'anteprima.
Capita solo a me?
Hai trovato lo stackoverflow che avevo visto pure io. Cosi' a naso non sono sicuro della sintassi. Il primo ffmpeg use /dev/video come input, e lo standard output (-) come output. Non credo salvi anche su file (hai verificato ?). Il secondo ffplay usa lo stdout del primo come input. E per questo funziona. Un ffmpeg e un ffplay che usino entrambi /dev/video no (il secondo trova "device busy", si vede che il primo mette un lock).

Non e' con tee (https://linuxize.com/post/linux-tee-command/) si possa fare un "piping a T" ? Io lo ho sempre visto e raramente usato per salvare su file e allo stesso tempo vedere a terminale l'output di un comando. Mai usato tee con un secondo comando.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
caturen
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 18104
Iscrizione: giovedì 8 aprile 2010, 18:41
Desktop: diversi
Distribuzione: debian

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da caturen »

Ma potrei non aver notato ciò che tu volevi farmi notare...
ti da quel errore semplicemente perchè dai il comando sbagliato
gst-launch-1.0 v4l2src device=/dev/video0 ! decodebin ! videoconvert! autovideosink
infatti da me la webcam parte tranquillamente
Immagine
non ho provato il comando che dovrebbe registrare
Avatar utente
trekfan1
Moderatore Globale
Moderatore Globale
Messaggi: 23550
Iscrizione: domenica 21 maggio 2006, 10:51
Desktop: Gnome
Distribuzione: Ubuntu 23.10 e 24.04 (dev)
Sesso: Maschile
Località: Formigine (MO) | Accecante Asceta

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da trekfan1 »

@Sargonsei ti ricordo di NON fare post consecutivi se non ci sono risposte ma di cliccare sulla matita e aggiungere il nuovo testo eventualmente preceduto da EDIT, grazie :)
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2562
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da Sargonsei »

OMBRA_Linux ha scritto:
oggi, 16:59
Lancia questo comando e posta ciò che viene fuori.

Codice: Seleziona tutto

lsof /dev/video0

Codice: Seleziona tutto

$ lsof /dev/video0
$
Nessun output.
Lucio C ha scritto:
oggi, 17:08
Sargonsei ha scritto:
oggi, 15:16
ed ho verificato che il comando

Codice: Seleziona tutto

ffmpeg -i /dev/video0 -c:v copy -c:a copy -f matroska - vOut01.mkv | ffplay -i -
fa qualcosa di molto simile a quello che vorrei fare io ma, se imposto inizio, durata, e/o risoluzione, non vedo l'anteprima.
Capita solo a me?
Hai trovato lo stackoverflow che avevo visto pure io. Cosi' a naso non sono sicuro della sintassi. Il primo ffmpeg use /dev/video come input, e lo standard output (-) come output. Non credo salvi anche su file (hai verificato ?). Il secondo ffplay usa lo stdout del primo come input. E per questo funziona. Un ffmpeg e un ffplay che usino entrambi /dev/video no (il secondo trova "device busy", si vede che il primo mette un lock).

Non e' con tee (https://linuxize.com/post/linux-tee-command/) si possa fare un "piping a T" ? Io lo ho sempre visto e raramente usato per salvare su file e allo stesso tempo vedere a terminale l'output di un comando. Mai usato tee con un secondo comando.
Il codice

Codice: Seleziona tutto

ffmpeg -i /dev/video0 -c:v copy -c:a copy -f matroska - vOut01.mkv | ffplay -i -
funziona (registra e mostra mentre registra), ma inizia la registrazione da quando viene impartito, e la termina quando si preme il tasto [Q], ed io vorrei che iniziasse e terminasse in base a comandi impartiti.
Per il resto, se non posti in questa discussione le righe di cui parli, mi riesce difficile capire di quale parli.
caturen ha scritto:
oggi, 17:54
Ma potrei non aver notato ciò che tu volevi farmi notare...
ti da quel errore semplicemente perchè dai il comando sbagliato
gst-launch-1.0 v4l2src device=/dev/video0 ! decodebin ! videoconvert! autovideosink
infatti da me la webcam parte tranquillamente
Immagine
non ho provato il comando che dovrebbe registrare

Codice: Seleziona tutto

$ gst-launch-1.0 v4l2src device=/dev/video0 ! decodebin ! videoconvert! autovideosink
Impostazione della pipeline a PAUSED ...
La pipeline è viva e non necessita il PREROLL ...
La pipeline è in PREROLLED ...
Impostazione della pipeline a PLAYING ...
New clock: GstSystemClock
Ridistribuzione latenza...
Errore: dall'elemento /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage: Output window was closed
Informazioni di debug aggiuntive:
../sys/xvimage/xvimagesink.c(586): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage
Execution ended after 0:00:21.646055738
Impostazione della pipeline a NULL ...
Esecuzione di free sulla pipeline...
Ha mostrato l'immagine ripresa dalla webcam, ma non ha salvato niente.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
caturen
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 18104
Iscrizione: giovedì 8 aprile 2010, 18:41
Desktop: diversi
Distribuzione: debian

Re: FFMpeg: come registrare quello che la vebcam inquadra, mentre lo si guarda?

Messaggio da caturen »

ed io che ti avevo scritto?
infatti da me la webcam parte tranquillamente
ho trovato un comando per far registrare e lasciare il file in home, ma ha un inconveniente: il led della webcam rimane acceso e bisognerebbe trovare il modo di spegnere la webcam.
Scrivi risposta

Ritorna a “Multimediale”

Chi c’è in linea

Visualizzano questa sezione: Google [Bot] e 5 ospiti