Jak dowiedzieć się, który proces korzysta z mojej kamery internetowej V4L2?

14

Próbowałem uruchomić następujące:

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

Zakładam, że obecnie program uzyskuje dostęp do mojej kamery internetowej, co jest kłopotliwe, ponieważ jego lampka jest wyłączona i lsof | grep /dev/videonic nie zwraca. Czy istnieje inny właściwy sposób sprawdzenia, jakie procesy aktualnie wykorzystują moją kamerę internetową? A może problem ma zupełnie inną naturę?

Turion
źródło
to druga kamera internetowa na tym samym kontrolerze USB?
Dee
pomocne byłoby opisanie typu kamery, dystrybucji Linuksa itp. Może debianic dmesg | grep -i 'warn|fail|error|usb|video'może dać ci trochę kleju
Dee
Jest to BisonCam, jeśli chodzi o lsusbto, używając modułu wideo USB. Używam Gentoo. Prześlę więcej informacji, kiedy błąd wystąpi następnym razem, ale tak naprawdę jestem zainteresowany tym, jak dowiedzieć się, które procesy używają kamery.
Turion

Odpowiedzi:

22

Miałem ten sam problem i rozwiązanie na http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDYCJA: adres URL zaktualizowany) pomógł mi.

$ fuser /dev/video0
/dev/video0: 1871m
$ ps axl | grep 1871
$ kill -9 1871
Tsan-Kuang Lee
źródło
4
Nic nie dostaję, fuser /dev/video0ale wciąż dostaję /dev/video0: Device or resource busy.
panzi
Zaktualizowałem adres URL (autor bloga go przeniósł) - być może możesz zobaczyć, czy ten post Ci pomoże. W przeciwnym razie, czy może to być proces zajmujący urządzenie w sposób nieciągły, więc kiedy utrwalacz sprawdzi, czy jest już zwolniony? Czy możesz umieścić utrwalacz w pętli tła i spróbować odtworzyć błąd?
Tsan-Kuang Lee
Po ponownym uruchomieniu błąd zniknął. Nie chcę ponownie wymuszać błędu. Wszystkie aplikacje GUI nie nagrywały audio i / lub wideo w jeden lub drugi sposób (zawieszanie, awaria, czarny obraz, brak dźwięku lub blokowanie / dev / video0), więc teraz używam ffmpeg na powłoce. Okropny UX, ale przynajmniej działa.
panzi
2
Stare pytanie, ale ponieważ zajęło mi to 2 godziny ... pamiętaj, aby spróbować sudo fuser /dev/video0na wypadek, gdyby polecenie bez sudo nie wyświetlało wyniku.
user3191334
2

Z jakiegoś powodu / dev / video * z odpowiedzi Tsan-Kuanga nie działało dla mnie. Oto kolejny sposób można osiągnąć swoje urządzenie: ls /dev/input/by-id/. Na przykład:

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

Siergiej Romanowski
źródło
1

To polecenie zwróci wszystkie procesy korzystające z urządzenia:

$ 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

Mając PID możesz zabić proces, w tym przykładzie:

$ kill 31526
Kirill Feoktistov
źródło
lsof / dev / video0 nie daje mi żadnych wyników
Max N