Как узнать, какой процесс использует моя веб-камера 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ничего не возвращает. Есть ли другой, правильный способ проверить, какие процессы в настоящее время используют мою веб-камеру? Или проблема совершенно другого характера?

Turion
источник
это вторая веб-камера на том же контроллере USB?
Ди
Было бы полезно, если бы вы описали тип вашей камеры, дистрибутив Linux и т. д. Возможно, Debianic dmesg | grep -i 'warn|fail|error|usb|video'может дать вам немного клея
Ди
Насколько нам известно, это BisonCam lsusb, использующий видео модуль USB. Я использую Gentoo. Я опубликую больше информации, когда ошибка произойдет в следующий раз, но на самом деле мне просто интересно узнать, какие процессы используют камеру.
Турион

Ответы:

21

У меня была та же проблема, и решение по адресу http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (РЕДАКТИРОВАТЬ: обновленный 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 (автор блога переместил его) - возможно, вы сможете увидеть, помогает ли вам этот пост. В противном случае, это может быть процесс, занимающий устройство не непрерывно, поэтому, когда фьюзер проверяет, оно уже освобождено? Не могли бы вы поместить fuser в фоновый цикл и попытаться воспроизвести ошибку?
Цан-Куанг Ли
После перезагрузки ошибка пропала. Не хочу снова вызывать ошибку. Все приложения с графическим интерфейсом не смогли записать аудио и / или видео тем или иным способом (зависание, сбой, черное изображение, отсутствие звука или блокировка / dev / video0), поэтому теперь я использую ffmpeg в оболочке. Ужасный UX, но по крайней мере это работает.
Panzi
2
Старый вопрос, но так как это заняло у меня 2 часа ... имейте в виду, чтобы попытаться sudo fuser /dev/video0на случай, если команда без sudo не даст результата.
user3191334
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 не дает мне никакого вывода
Макс N