我有 2 个 USB 网络摄像头连接到我的 debian 6 盒子。一个是a Logitech QuickCam Orbit
,另一个是a Logitech QuickCam 4000 Pro
。
目前 Orbit 显示为/dev/video0
4000 Pro 为/dev/video1
.
两个摄像头似乎都工作正常,也就是说,我可以同时打开它们/dev/video0
并且/dev/video1
没有错误。我可以使用video4Linux
ioctl()
. 我可以使用video4linux
ioctl()
--all 设置他们的捕获格式而不会出错。司机似乎工作得很好。
select()
然后我为这两个文件描述符进行了设置,但select()
从未为/dev/video1
文件描述符触发。
这是我的select()
相关代码:
FD_ZERO(&readFDS);
FD_SET(nCaptureReadPipeFD, &readFDS); // this is a control channel for my thread
FD_SET(nCameraOneFD, &readFDS);
if (nNumberOfCameras == 2) FD_SET(nCameraTwoFD, &readFDS);
nReturnCode = select(nSelectFD, &readFDS, NULL, NULL, NULL);
我想我是select()
正确的——我已经检查了所有相关的文件描述符,它们对应于open()
调用返回的相应文件描述符。select()
调用中使用的文件描述符nSelectFD
确实比最大的文件描述符多 1。
但仍然没有采取任何行动/dev/video1
使用多台相机时,我是否必须处理主要/次要设备编号?