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

qdi*_*dii 4 video linux webcam v4l2

我第一次启动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
Run Code Online (Sandbox Code Playgroud)

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

但是我觉得很好奇,因为video4linux 说

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

我的网络摄像头显示lspci058f:a014 Alcor Micro Corp. Asus Integrated Webcam,但我什至不知道底层驱动程序是什么,所以我无法检查我的问题是否与驱动程序相关。任何输入都非常受欢迎!

bil*_*.cn 6

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

在 Windows 上,您可以使用 splitcam 来复制提要。在 Linux 上,您可以使用 WebcamStudio。