alliedvision / VmbPy

Python API of the Vimba X SDK
BSD 2-Clause "Simplified" License
19 stars 7 forks source link

Error when using the vimba viewer with 2 or more cameras #11

Open duranARC opened 1 year ago

duranARC commented 1 year ago

I have 12 cameras connected to a PC running Linux 20.04 LTS. Whenever I attempt to start the cameras, I encounter an error: 'Start capture failed Error: -22 Unspecified GentL runtime error'. Interestingly, this error seems to occur when two cameras are already active (the same issue happens with the Python API).

Teresa-AlliedVision commented 1 year ago

12 cameras on one PC is quite a lot, there might be problems with the bandwidth of the connection, especially if you are using a switch. If the bandwidth is too busy to contact the other camera you are trying to open reliably, then there will be timeout or unspecified errors. What interface and what camera model are you using? (E.g. Alvium U-500m (USB) or Alvium G1-XXXx (GigE) or Manta 240 (GigE)) What does your network topolofy look like? -> What kind of network cards/USB cards, PCIE slot are they in (e.g. PCIE 3 x16), switches etc.

duranARC commented 1 year ago

I was able to solve it, but I am having a problem when using deepcopy, if I use it the frames start to give me incomplete but if I remove it they go fine.

I need to use the deepcopy because when I save it in an array the frames start to overwrite, I lose the previously saved frames. I am currently using 14 cams

Teresa-AlliedVision commented 1 year ago

My assumption would be, that the processing of the frames is slower than the framerate of the camera. You can time this in your code or see if assigning a larger frame queue can buffer short term delays. It might also be, that the additional CPU load or needed RAM slow the system down, so that the packets that make up the frames, aren't processsed fast enough at the interface card. Incomplete frames can happen at several parts in the system and it depends a lot on the cameras/interface you use, what badwidth the cameras are streaming with and what you host hardware looks like. Have a look at your CPU load and timings. Without further information on your cameras and hardware configuration, we can't help much with optimization. In general, it might help if you use a C or C++ implementation, as they are more performant.

duranARC commented 1 year ago

The cameras are alvium u811-c model and in terms of hardware I am using https://www.jhc-technology.com/embedded-boxpc-kmda5920s002.

it has windows 10

pjmara commented 5 months ago

I see this issue isn't closed- I am hitting the same issue. I think it has something to do with there being more than 2 cameras. I will look into the c++ implementation, but it is rather suspect that two users have issues specifically with adding a third camera. I would be interested to know if others have gotten this working in any environment with 3 cameras at once....

pjmara commented 5 months ago

I am using 4 cameras right now, three 1800U-1240Cs and 1 1800U-2050C. They are plugged in to a usb-pci connector where each USB has its own host controller. The usb-pci connector is https://vantecusa.com/products_detail.php?p_id=119 for reference. I think my hardware platform should be handle this info over usb. I'm not doing any fancy processing, and I'm running the multithreaded_opencv example (slightly modified to not even convert the frames- all my FrameConsumer does is peel things off the queue)

Teresa-AlliedVision commented 5 months ago

The Python API is not as performant as the C++ or C API. To check if that is the issue with your setup, please try streaming the cameras in VimbaX Viewer, which is implemented with C++. For more in depth troubleshooting, please contact support through our website.

Problems with the Python API streaming more than two cameras is not something we see in support cases. Problems with streaming more than two cameras come up a lot, if: