Comment savoir quel processus utilise ma webcam V4L2?

14

J'ai essayé d'exécuter ce qui suit:

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

Je suppose donc qu'un programme accède actuellement à ma webcam, ce qui est encombrant car son voyant est éteint et lsof | grep /dev/videone renvoie rien. Existe-t-il un autre moyen approprié de vérifier quels processus utilisent actuellement ma webcam? Ou le problème est-il d'une tout autre nature?

Turion
la source
c'est une deuxième webcam sur le même contrôleur USB?
Dee
helpfull serait si vous décrivez votre type de caméra, linux distro etc Peut - être debianic dmesg | grep -i 'warn|fail|error|usb|video'peut vous donner un peu de colle
Dee
C'est une BisonCam en ce qui lsusbconcerne le module vidéo USB. Je dirige Gentoo. Je publierai plus d'informations lorsque l'erreur se produira la prochaine fois, mais en fait, je souhaite simplement savoir quels processus utilisent la came.
Turion

Réponses:

22

J'avais le même problème et la solution à http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url mis à jour) m'a aidé.

$ fuser /dev/video0
/dev/video0: 1871m
$ ps axl | grep 1871
$ kill -9 1871
Tsan-Kuang Lee
la source
4
Je ne reçois rien pour fuser /dev/video0mais je reçois toujours /dev/video0: Device or resource busy.
panzi
J'ai mis à jour l'URL (l'auteur du blog l'a déplacée) - vous pouvez peut-être voir si ce message vous aide. Sinon, pourrait-il s'agir du processus occupant l'appareil de manière non continue, alors lorsque l'unité de fusion vérifie qu'il est déjà libéré? Pourriez-vous mettre l'unité de fusion dans une boucle d'arrière-plan et essayer de reproduire l'erreur?
Tsan-Kuang Lee
Après un redémarrage, l'erreur a disparu. Je ne veux pas forcer à nouveau l'erreur. Toutes les applications GUI n'ont pas réussi à enregistrer de l'audio et / ou de la vidéo d'une manière ou d'une autre (blocage, plantage, image noire, aucun son ou blocage / dev / video0), j'utilise maintenant ffmpeg sur le shell. Horrible UX mais au moins ça marche.
panzi
2
Vieille question mais comme il m'a fallu 2h ... pensez à essayer sudo fuser /dev/video0au cas où la commande sans sudo n'affiche pas de résultat.
user3191334
2

Pour une raison / dev / video * de la réponse de Tsan-Kuang n'a pas fonctionné pour moi. Voici une autre façon , vous pouvez atteindre votre appareil: ls /dev/input/by-id/. Par exemple:

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

Sergey Romanovsky
la source
1

Cette commande renverra tous les processus qui utilisent le périphérique:

$ 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

Ayant PID, vous pouvez tuer le processus, dans cet exemple:

$ kill 31526
Kirill Feoktistov
la source
lsof / dev / video0 ne me donne aucune sortie
Max N