我有 2 个 USB 网络摄像头连接到我的 debian 6 盒子。一个是a Logitech QuickCam Orbit,另一个是a Logitech QuickCam 4000 Pro。
目前 Orbit 显示为/dev/video04000 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
使用多台相机时,我是否必须处理主要/次要设备编号?