Come faccio a sapere quale processo utilizza la mia webcam V4L2?


14

Ho provato a eseguire il seguente:

$ vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path webcam.png --scene-prefix image_prefix --scene-format png vlc://quit --run-time=1                                                     
VLC media player 2.0.7 Twoflower (revision 2.0.6-54-g7dd7e4d)                                                                                                                                                                                                             
[0x1f4a1c8] dummy interface: using the dummy interface module...                                                                                                                                                                                                          
[0x7fc19c001238] v4l2 demux error: VIDIOC_STREAMON failed                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
[0x7fc19c007f18] v4l2 access error: cannot set input 0: Device or resource busy                                                                                                                                                                                           
[0x7fc19c007f18] v4l2 access error: cannot set input 0: Device or resource busy                                                                                                                                                                                           
[0x7fc1a4000b28] main input error: open of `v4l2:///dev/video0' failed                                                                                                                                                                                                    
[0x7fc1a4000b28] main input error: Your input can't be opened                                                                                                                                                                                                             
[0x7fc1a4000b28] main input error: VLC is unable to open the MRL 'v4l2:///dev/video0'. Check the log for details.                                                                                                                                                         
[0x7fc19c007cc8] idummy demux: command `quit'    

Quindi suppongo che ci sia un programma che sta attualmente accedendo alla mia webcam, il che è ingombrante poiché la sua luce è spenta e lsof | grep /dev/videonon restituisce nulla. Esiste un altro modo corretto per verificare quali processi stanno attualmente utilizzando la mia webcam? O il problema è di natura completamente diversa?


è una seconda web cam sullo stesso controller USB?
Dal

sarebbe utile se descrivi il tuo tipo di telecamera, la distro linux, ecc. Forse debianic dmesg | grep -i 'warn|fail|error|usb|video'può darti un po 'di colla
Dee,

È una BisonCam per quanto lsusbriguarda, usando il modulo video USB. Sto eseguendo Gentoo. Pubblicherò ulteriori informazioni quando si verificherà l'errore la prossima volta, ma in realtà sono solo interessato a scoprire quali processi utilizzano la cam.
Turion,

Risposte:


21

Avevo lo stesso problema e la soluzione su http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url aggiornato) mi ha aiutato.

$ fuser /dev/video0
/dev/video0: 1871m
$ ps axl | grep 1871
$ kill -9 1871

4
Non sto ottenendo nulla per, fuser /dev/video0ma ho ancora /dev/video0: Device or resource busy.
Panzi,

Ho aggiornato l'URL (l'autore del blog lo ha spostato) - forse puoi vedere se quel post ti aiuta. Altrimenti, potrebbe essere il processo che occupa il dispositivo in modo non continuo, quindi quando il fusore verifica che sia già stato rilasciato? Potresti mettere il fusore in un loop in background e provare a riprodurre nuovamente l'errore?
Tsan-Kuang Lee,

Dopo un riavvio l'errore era scomparso. Non voglio forzare di nuovo l'errore. Tutte le app della GUI non sono riuscite a registrare audio e / o video in un modo o nell'altro (blocco, crash, immagine nera, nessun audio o blocco / dev / video0), quindi ora uso ffmpeg sulla shell. UX orribile ma almeno funziona.
Panzi,

2
Vecchia domanda ma dato che mi ci sono voluti 2h ... tieni presente di provare sudo fuser /dev/video0nel caso in cui il comando senza sudo non mostri un risultato.
user3191334

2

Per qualche motivo / dev / video * dalla risposta di Tsan-Kuang non ha funzionato per me. Ecco un altro modo si potrebbe raggiungere il tuo dispositivo: ls /dev/input/by-id/. Per esempio:

$ fuser /dev/input/by-id/usb-Microsoft_Microsoft®_LifeCam_HD-5000-event-if00


1

Questo comando restituirà tutti i processi che utilizzano il dispositivo:

$ lsof /dev/video0
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
cheese  31526 kirill  mem    CHR   81,0          18321 /dev/video0
cheese  31526 kirill   23u   CHR   81,0      0t0 18321 /dev/video0

Con PID puoi terminare il processo, in questo esempio:

$ kill 31526

lsof / dev / video0 non mi dà alcun output
Max N
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.