为什么两个程序不能同时访问我的网络摄像头?

为什么两个程序不能同时访问我的网络摄像头?

我第一次启动cheese,我的网络摄像头打开了。然后我运行vlc以获取输出/dev/video0,但失败了:

[0x7f3ea40012e8] v4l2 demux error: cannot set input 0: Device or resource busy
[0x7f3ea40012e8] v4l2 demux error: cannot set input 0: Device or resource busy
[0x7f3ea4002168] v4l2 access error: cannot set input 0: Device or resource busy
[0x7f3ea4002168] v4l2 access error: cannot set input 0: Device or resource busy
[0x7f3eb4000b78] main input error: open of `v4l2:///dev/video0' failed

无论我运行哪一对视频程序(skype、cheese、vlc 等等),结果总是相同的:当第一个程序已经抓取输出时,第二个程序就无法再使用网络摄像头。

然而我觉得很好奇video4linux 状态

一般情况下,V4L2 设备可以多次打开。当驱动程序支持此功能时,用户可以启动“面板”应用程序来更改亮度或音量等控件,而另一个应用程序则捕获视频和音频。

我的网络摄像头显示为lspci058f:a014 Alcor Micro Corp. Asus Integrated Webcam但我甚至不知道底层驱动程序是什么,所以我无法检查我的问题是否与驱动程序有关。欢迎提供任何意见!

答案1

这在 Windows 和所有操作系统上都是一样的。网络摄像头不是一个简单的输入设备:要从中读取帧,您需要根据某种协议主动发送命令。这使得它具有状态,因此管理其状态的应用程序必须对它具有独占访问权限。

在 Windows 上,您可以使用 splitcam 复制馈送。在 Linux 上,您可以使用 WebcamStudio。

相关内容