I’ve been playing around with my BBB for a couple months now and I love it. I’ve currently got it set up streaming video to my website 24/7.
I’m now wondering how many USB cameras I could reasonably expect to use on this thing at one time, because I want to set up a sort of improved IP camera system. Essentially I want to create a networked array of HD cameras, so I’m trying to decide which SBC would be able to reliably record 720p or 1080p video from as many cameras as possible. The cameras need to run 24/7, detect motion, perform some CV tasks (using opencv, presumably), and save the resulting clips to a NAS, or even just to a USB hard drive.
So let’s say I want to set up an array of 720p30 cameras and record and process video from them. Using a USB hub, would the BBB handle 2, 3, or even 4 cameras? What if the frame rate was 60 fps? Or what about 2, 3, or 4 1080p30 cameras?
I’m just trying to get a feel for how capable the BBB is, or if I should look toward a different, more powerful SBC.
Thanks in advance for any advice you can offer!
Remember, usb is a shared resource. With only one port on the BBB,
depending on how much bandwidth the first camera takes will let you
know how many you can have plugged in.
As a side note, thank you for all the help you provide people here and elsewhere. I haven’t been very active in this group, but I’ve been subscribing and reading for a while. I guess the phrase “Long time listener, first time caller” would be appropriate.
Anyway, USB 2.0 will transfer at 480 Mbps (in the best case) which is twice the bandwidth I’d need to run four 1080p30 cameras streaming MJPEG at approximately 60 Mbps, or roughly four times the bandwidth I’d need for 720p30.
So let’s assume that we won’t have a bottleneck on the USB, and I’ll save the videos to a NAS over Ethernet (USB & Ethernet are not shared, right?) so we won’t have a bandwidth issue there either. If this is true, would the BBB have the horsepower to run motion detection on all four streams and output to a NAS reliably? If not four cameras, how about 3, or 2?
I understand that this is a pretty specific case and I might just have to try it out to see what it can handle, I’m just trying to get a feel for whether or not it’s even worth trying with a BBB, or if I should look for a higher-end board and cough up the extra cash.
The max framerate you will get is 15 fps, no matter about USB speed. It is because of DMA problem or something. I tried several cameras and could get more than 15 fps (trying yuv, mjpeg, x264…)
id imagije if you used IP cameras, You could do a couple more. The BBB’s Ethernet port is as fast as fast Ethernet gets to theoretical.
proper IP camera/ mobile phone camera dont use USB, they use MIPI or CSI2 to interface with MPU.
USB webcam is just for some hobby/demo use.
I think you missed my point. You could use ethernet as well as USB . . .
I think you both may be missing the point. Whether I’m using USB, Ethernet, etc., the question is whether or not the BBB has enough processing power to run opencv on multiple 720p+ resolution streams simultaneously, whether it’s two, three, or four at once.
Sure, from a bandwidth perspective you could probably run 4 IP cameras that output H.264 at the same time while also writing to a NAS over the same Ethernet line, but that’s a moot point if the BBB can’t actually process all that data fast enough.
If the BBB can only handle running opencv on one HD camera at a time, then I’m better off just using an RPi2 where I can at least do that with a CSI2 camera for $60 all-in.
Thanks for your input. Does anybody else know more specifics about the processing power side of the equation?
The quad-core cortex-A7 cpu of the RPi2 has more processing power than the single core cortex-A8 of the BBB, specially if you can multi-thread your opencv tasks.
But even the RPi2 may not reach your expectations. Some opencv feature extractions are way cpu intensive, demanding more than 1s/frame on an A8. Add to that the decoding of the H264 stream. I guess only a desktop will handle multiple HD sources.
The "RPi2" still only has 'one' real usb port. Plus you have the
smsc95xx ethernet taking up bandwidth by default.
Crap, forgot about the CSI2 port, yes this is one of the downfalls of
the am335x, no native camera port.
Yeah, it sounds like the RPi2 is the way to go and I’ll just use one camera per board. At least that way I’ll be sure it can handle the opencv stuff too.
Thanks for your help.