Como descubro qual processo está usando minha webcam V4L2?

14

Eu tentei executar o seguinte:

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

Portanto, estou assumindo que existe atualmente um programa acessando minha webcam, o que é complicado, pois a luz está apagada e lsof | grep /dev/videonão retorna nada. Existe outra maneira adequada de verificar quais processos estão usando minha webcam atualmente? Ou o problema é de natureza completamente diferente?

Turion
fonte
é uma segunda web cam no mesmo controlador USB?
Dee
útil seria se você descreve o seu tipo de câmera, distro linux etc. Talvez debianic dmesg | grep -i 'warn|fail|error|usb|video'pode dar-lhe um pouco de cola
Dee
É uma BisonCam no que diz lsusbrespeito, usando o módulo de vídeo usb. Estou executando o Gentoo. Vou postar mais informações quando o erro ocorrer na próxima vez, mas na verdade só estou interessado em saber quais processos estão usando a câmera.
Turion

Respostas:

21

Eu estava tendo o mesmo problema e a solução em http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url updated) me ajudou.

$ fuser /dev/video0
/dev/video0: 1871m
$ ps axl | grep 1871
$ kill -9 1871
Tsan-Kuang Lee
fonte
4
Não estou conseguindo nada, fuser /dev/video0mas ainda recebo /dev/video0: Device or resource busy.
panzi
Atualizei o URL (o autor do blog o moveu) - talvez você possa ver se essa postagem o ajuda. Caso contrário, poderia ser o processo que ocupa o dispositivo de forma não contínua, portanto, quando o fusor verifica se ele já foi liberado? Você poderia colocar o fusor em um loop de segundo plano e tentar reproduzir novamente o erro?
Tsan-Kuang Lee
Após uma reinicialização, o erro desapareceu. Não quero forçar o erro novamente. Todos os aplicativos da GUI falharam ao gravar áudio e / ou vídeo de uma ou de outra maneira (travar, travar, imagem preta, sem áudio ou bloquear / dev / video0), então agora uso o ffmpeg no shell. UX horrível, mas pelo menos funciona.
panzi
2
Pergunta antiga, mas como me levou 2h ... lembre-se de tentar sudo fuser /dev/video0, caso o comando sem sudo não esteja mostrando um resultado.
user3191334
2

Por alguma razão / dev / video * da resposta de Tsan-Kuang não funcionou para mim. Aqui está outra maneira você poderia chegar ao seu dispositivo: ls /dev/input/by-id/. Por exemplo:

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

Sergey Romanovsky
fonte
1

Este comando retornará todos os processos que estão usando o 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

Tendo o PID, você pode interromper o processo, neste exemplo:

$ kill 31526
Kirill Feoktistov
fonte
lsof / dev / video0 não me dá nenhuma saída
Max N