Hi,
I have a potentially silly question/idea and I could use some advice sense checking this.
Would it be possible to record 9 USB camera streams to disk on a Jetson AGX Orin (ideally) in sync ?
(I did find helpful info on this wonderful forum already:
- Multiple usb camera error - #3 by yuweiw
- How the Deepstream can support the multiple Videos input which from Multiple USB cameras and to do the analysis - #10 by PF-Luckyboy
- Insufficient bandwidth when using multiple USB cameras - #10 by DaneLLL
I could still use extra info please.)
The cameras as Arducam 5MP USB modules which are USB2.0 (480MB).
Ideally the streams would be 720p, however if this goes beyond bandwidth I can run a few tests to reduce resolution to 540p or maybe even 360p.
Having a look at the specs this sounds positive:
16x 1080p30 (H.265)
I think the challenge will be in managing the number of USB ports and bandwidth.
Checking the specs again I see:
3x USB 3.2 Gen2 (10 Gbps) 4x USB 2.0
Up to 2 x8 + 2 x4 + 2 x1 (PCIe Gen4, Root Port & Endpoint)
I can spot the USB2.0 ports on my Jetson but not the USB3.0 ones.
Perhaps I need a USB expansion board connected to a few pins ?
If you can share a link to the relevant documentation (and perhaps links to supported/tested hardware) that would be amazing!
3 x USB 3 + 4 x USB 2 get me 9 ports.
Hopefully with a PCIe USB card I can get more.
The hope is that:
- the USB 3 ports are on a separate bus to the USB2 ports
- the PCIe will provide another bus
- maybe I can split the 9 cameras as 3 on USB2 ports , 3 on USB 3 ports, 3 on PCIe USB
Is this feasible ?
And to make things really difficult:
- the distances between are large (4 cameras are at ~8.8m, 4 cameras at at ~6.2m)
- ideally I’d record the frames in sync
Regarding the distance I hope I can use 10m USB2.0 active (powered) extensions.
I suspect this may introduce a bit of delay, however I’m mainly looking to record in sync, not process in real-time with minimal lag.
Regarding sync this is where I don’t know enough about USB and to handle that (e.g. is there a USB camera driver equivalent to hardware sync ).
(Ideally I’d be using cameras with global shutter and hardware sync on PoE or better, however I’m in a scenario where the hardware can’t change unfortunately).
One lo-fi idea is to trigger a large flash seen by all cameras and use that in port to align the starting point. Are the are other better techniques ?
If there are similar examples I can start prototyping with that would be great. (I suspect DeepStreamSDK would be a good place to start ?)
Thank you so much,
George