È possibile che due processi accedano alla webcam contemporaneamente?


14

Vorrei provare a utilizzare Cheese negli Hangout di Google+ e configurazioni simili e vorrei sapere se è possibile che la webcam venga utilizzata da due processi per avere accesso alla webcam contemporaneamente. Non l'ho ancora provato, ma prima di farlo, ho pensato di chiedere.

Quindi è possibile?

Risposte:


6

Beh, ho appena provato. Risultati interessanti

Ho skype e cheese e webcam giocattolo e ritrovi (che funzionano tutti) e li ho provati insieme.

risultati:

Non puoi usare la stessa webcam su 2 cose contemporaneamente.

Cheese (funzionante) + Webcam Toy (non funzionante) + Skype (piccolo, in alto a destra. Non funzionante).

inserisci qui la descrizione dell'immagine

Puoi usare 2 webcam su 2 cose però. (Formaggio + Giocattolo webcam).

inserisci qui la descrizione dell'immagine

Hangouts (non funzionante) + formaggio (funzionante)

inserisci qui la descrizione dell'immagine

Hangouts (lavorare da solo).

inserisci qui la descrizione dell'immagine

Formaggio rotto quando ho aperto per primo Hangouts. Ha fatto lo stesso con gli altri, ma il mio Internet è troppo lento per caricare ogni singolo screenshot (e dubito che apprezzerai oltre 30 schermate) ...

inserisci qui la descrizione dell'immagine

Ho anche provato a creare un collegamento simbolico /dev/video0e salvarlo in /devas video2. Non ha funzionato.

Inoltre non posso eseguire 2 processi di formaggio contemporaneamente.

Se dovessi, ti consiglierei di farlo a schermo intero e di fare 2 registrazioni dello schermo. Dubito che funzionerebbe per quello che vuoi però.


Grazie! Questo è conciso e mi dice quello che devo sapere. Bel giardino a proposito! La taglia verrà assegnata alla scadenza del timeout (21 ore rimanenti). Quindi eliminerò questo commento.
RolandiXor

@Mew Questo è stato il mio ultimo tentativo di farlo funzionare :)
Tim

@Tim La prossima risposta è esattamente quello che stai cercando se sei venuto qui perché hai bisogno di un modo per farlo.
Isiah Meadows,

1
@impinball no, l'ho appena trovata una domanda interessante!
Tim

14

Fortunatamente, ora SÌ!

Attualmente esiste un progetto su GitHub che può mostrare non solo due, ma un numero infinito (limitato solo dalla capacità del sistema) di dispositivi video da una singola fonte.

Il progetto si chiama v4l2loopback. (Controllare il collegamento e scorrere verso il basso per visualizzare il file README per le istruzioni.)

Puoi installarlo v4l2loopbackclonando GitHub ed eseguendo questi comandi:

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

Esempi

Per esempi su come usarlo con GStreamer, FFmpeg, MPlayer e Skype, controlla la loro piccola wiki . Spero che tu possa trovare le giuste impostazioni per soddisfare le tue esigenze.

Divertiti a modificare!


1
I dispositivi virtuali sono una delle aree in cui brilla Linux (e * nix, per quella materia). È più complicato su Windows persino scrivere teeun'utilità di base che non aspetta stdindi finire di alimentarla. Non sarei sorpreso se questo effettivamente utilizza un equivalente binario teecon un supporto più scalabile sotto il cofano.
Isiah Meadows,

Sebbene ciò risponda alla domanda, sarebbe preferibile includere qui parti del collegamento e fornire il collegamento come riferimento, in modo da avere alcuni esempi, ad esempio creare 2 dispositivi da 1. Quali sono le opzioni per questo? È possibile (come detto nei requisiti del PO) utilizzare con gli Hangout di Google? L'ho anche provato con Skype e non sembra funzionare. Ora siamo la versione 4.3 non 4.0 ...
Tim

2
Dovrò dare un'occhiata quando tornerà il mio altro sistema. Probabilmente darò una taglia aggiuntiva.
RolandiXor

3
Questo ora fa effettivamente parte di Ubuntu - non c'è bisogno di git.
nbubis,

In effetti, questo è ora impacchettato per Ubuntu / Debian come v4l2loopback-utils Non c'è bisogno di compilare da solo questo
Arnaud Jeansen,

3

Basato sulla risposta di @The Eye

Ho installato per la prima volta i pacchetti gstreamer su Ubuntu 18.04 https://gstreamer.freedesktop.org/documentation/installing/on-linux.html

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

Ho ricevuto un messaggio di avviso come qui su Ubuntu 18.04 LTS https://github.com/umlaeute/v4l2loopback/issues/139 (ma non mi ha impedito di caricare il driver v4l2loopback)

$ sudo depmod -a

Ho solo 1 webcam sul mio laptop / dev / video0 e volevo ottenere 2 stream dallo stesso hardware. Basato su https://github.com/umlaeute/v4l2loopback/blob/master/README.md

$ modprobe v4l2loopback devices=2

Ora dovrebbe esserci /dev/video1e /dev/video2creato supponendo che /dev/video0fosse l'unico dispositivo video.

Ora eseguo quanto segue in una finestra del terminale

gst-launch-1.0 v4l2src device=/dev/video0 ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2

Apro altre 2 schede

Nella prima scheda

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

Nella seconda scheda

gst-launch-1.0 v4l2src device=/dev/video2 ! videoconvert ! ximagesink

Ora si dovrebbero vedere 2 flussi video

AGGIORNARE

Anche se uso /dev/video1più volte lo stesso dispositivo, mi dà tutto quel flusso. esempio.

Nella prima scheda

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

Nella seconda scheda

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

Nella terza scheda

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

mi dà tre flussi.


A proposito, se la propria webcam ha l'audio, quindi filtrare i dispositivi audio utilizzando il comando, pactl list | grep -A2 'Source #'quindi utilizzare quel dispositivo nella seguente pipeline (può eseguire anche più istanze della pipeline)gst-launch-1.0 pulsesrc device=alsa_input.<name of device> ! autoaudiosink
enthusiasticgeek

Funziona molto meglio della soluzione FFmpeg in quanto non sono riuscito a far copiare F2mpeg h264 senza decodificarlo, il che lo ha portato a utilizzare sempre la CPU anche quando nessuno ascoltava
Fabian N.

2

La risposta è no con forse ... The Library, "Video 4 Linux" rileva se un dispositivo è in uso e non si avvia. Tuttavia; se si desidera scaricare libv4l-dev e modificarlo manualmente, è possibile modificare il codice per sbarazzarsi di questo controllo e quindi semplicemente ricompilarlo. Immagino che potresti farlo funzionare, ma sarebbe estremamente instabile. Potrebbe valere la pena dare un'occhiata.

TLDR: tutto è possibile se sei un programmatore con un po 'di grasso per gomiti a portata di mano. Non vuoi andare così lontano? Allora no; non è possibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.