¿Cómo averiguo qué proceso está usando mi cámara web V4L2?

14

Traté de ejecutar lo siguiente:

$ 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'    

Así que supongo que actualmente hay un programa accediendo a mi cámara web, lo cual es engorroso ya que su luz está apagada y lsof | grep /dev/videono devuelve nada. ¿Hay otra forma adecuada de verificar qué procesos están usando actualmente mi cámara web? ¿O es el problema de una naturaleza completamente diferente?

Turion
fuente
Es una segunda cámara web en el mismo controlador USB?
Dee
sería útil si describe su tipo de cámara, distribución de Linux, etc. Quizás debianic dmesg | grep -i 'warn|fail|error|usb|video'pueda darle algo de pegamento
Dee
Es una BisonCam en lo que lsusbrespecta, utilizando el módulo de video usb. Estoy ejecutando Gentoo. Publicaré más información cuando se produzca el error la próxima vez, pero en realidad solo estoy interesado en saber qué procesos están usando la cámara.
Turion

Respuestas:

21

Estaba teniendo el mismo problema y la solución en http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url updated) me ayudó.

$ fuser /dev/video0
/dev/video0: 1871m
$ ps axl | grep 1871
$ kill -9 1871
Tsan-Kuang Lee
fuente
44
No estoy obteniendo nada para fuser /dev/video0pero todavía lo consigo /dev/video0: Device or resource busy.
panzi
Actualicé la URL (el autor del blog la movió), tal vez puedas ver si esa publicación te ayuda. De lo contrario, ¿podría ser el proceso que ocupa el dispositivo de forma no continua, de modo que cuando el fusor comprueba que ya está liberado? ¿Podría poner el fusor en un bucle de fondo e intentar reproducir el error?
Tsan-Kuang Lee
Después de reiniciar, el error desapareció. No quiero forzar el error nuevamente. Todas las aplicaciones GUI no pudieron grabar audio y / o video de una u otra manera (bloqueo, bloqueo, imagen en negro, sin audio o bloqueo / dev / video0), así que ahora uso ffmpeg en el shell. Horrible UX pero al menos funciona.
panzi
2
Antigua pregunta, pero ya que me tomó 2h ... tenga en cuenta intentarlo sudo fuser /dev/video0en caso de que el comando sin sudo no muestre un resultado.
user3191334
2

Por alguna razón / dev / video * de la respuesta de Tsan-Kuang no funcionó para mí. Aquí hay otra manera se podría llegar a su dispositivo: ls /dev/input/by-id/. Por ejemplo:

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

Sergey Romanovsky
fuente
1

Este comando devolverá todos los procesos que están utilizando el 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

Tener PID puede matar el proceso, en esta muestra:

$ kill 31526
Kirill Feoktistov
fuente
lsof / dev / video0 no me da ningún resultado
Max N