Як дізнатися, який процес використовує моя веб-камера V4L2?


14

Я спробував запустити наступне:

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

Тож я припускаю, що зараз існує програма, яка отримує доступ до моєї веб-камери, яка є громіздкою, оскільки її світло вимикається і lsof | grep /dev/videoнічого не повертає. Чи є інший правильний спосіб перевірити, які процеси зараз використовує моя веб-камера? Або проблема зовсім іншого характеру?


це друга веб-камера на тому ж USB-контролері?
Ді

корисним було б, якщо ви опишете тип камери, дистрибутив Linux та ін. Можливо, debianic dmesg | grep -i 'warn|fail|error|usb|video'може дати вам клей
Dee

Наскільки lsusbце стосується BisonCam, використовуючи відеомодуль usb. Я бігаю Gentoo. Я опублікую додаткову інформацію, коли помилка з’явиться наступного разу, але насправді мені просто цікаво, як дізнатися, які процеси використовують кулачок.
Турін

Відповіді:


22

У мене була така ж проблема, і рішення на веб- сайті http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url оновлений) допомогло мені.

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

4
Я нічого не отримую, fuser /dev/video0але все одно отримую /dev/video0: Device or resource busy.
panzi

Я оновив URL-адресу (автор блогу перемістив її) - можливо, ви можете побачити, чи допомагає вам цей пост. В іншому випадку, чи може це бути процес, що займає пристрій безперервно, тож коли перевіряючий термічний апарат вже вивільнений? Чи можете ви поставити фюзер у фоновий цикл і спробувати відновити помилку?
Цан-Куанг Лі

Після перезавантаження помилка не була. Не хочуть знову примушувати помилку. Усі програми GUI не змогли записати аудіо та / або відео тим чи іншим способом (зависання, збій, чорне зображення, відсутність аудіо чи блокування / dev / video0), тому я тепер використовую ffmpeg на оболонці. Жахливий UX, але принаймні це працює.
панци

2
Старе питання, але оскільки мені знадобилося 2 години ... майте на увазі, щоб спробувати, sudo fuser /dev/video0якщо команда без судо не дає результату.
користувач3191334

2

Чомусь / dev / video * з відповіді Цан-Куанга для мене не вийшло. Ось ще один спосіб , яким Ви могли б досягти пристрою: ls /dev/input/by-id/. Наприклад:

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


1

Ця команда поверне всі процеси, які використовують пристрій:

$ 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

Маючи PID, ви можете вбити процес у цьому прикладі:

$ kill 31526

lsof / dev / video0 не дає мені жодного результату
Max N
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.