我如何找出正在使用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控制器上的第二个网络摄像头吗?
Dee 2014年

如果您描述了您的相机类型,Linux发行版等,那么可能会有所帮助。也许debianic dmesg | grep -i 'warn|fail|error|usb|video'可以给您一些帮助
Dee

就其lsusb而言,它是使用usb视频模块的BisonCam 。我正在运行Gentoo。下次发生错误时,我会发布更多信息,但实际上我只是对如何找出正在使用cam的进程感兴趣。
炫龙

Answers:


22

我遇到了同样的问题,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 2015年

我更新了URL(博客作者将其移动了)-也许您可以看到该帖子是否对您有所帮助。否则,是否可能是不连续地占用设备的过程,所以当热熔器检查设备是否已释放时?您能否将热熔器置于后台循环中并尝试重现该错误?
李赞光

重新启动后,错误消失了。不想再次强行执行该错误。所有的GUI应用程序都无法以一种或另一种方式(挂起,崩溃,黑色图像,无音频或阻止/ dev / video0)记录音频和/或视频,因此我现在在外壳上使用ffmpeg。糟糕的UX,但至少可以正常工作。
panzi

2
老问题了,但是因为花了我2个小时,所以...请记住尝试sudo fuser /dev/video0,以防不带sudo的命令未显示结果。
user3191334'4

2

由于某些原因,Tsan-Kuang的答案中的/ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.