Video streaming options based on Dom's findings


#1

From the 3/5/13 dev call. Dom mentioned that he tried lots of libraries and the beagle could not keep up with any of them. I do see that the beagle is often running 60% cpu with just node and mjpegstreamer running. Folks talked about finding a camera with h.264 on chip built in. I like that idea. I also wanted to mention that the key to the Beagle is using the DSP for all encoding type features. This is a post of a group using GStreamer and the DSP to stream video that others may have already seen.

Have we already investigated going this direction? If I understand correctly, we have to compile linux with support for the DSP and then link in the TI libraries to the build of GStreamer or similar libraries to pass processing to the DSP.


#2

Brian,

are you sure the Beaglebone does really have a DSP? As far as I could see, it uses the AM3359 chip (no DSP) while the BeagleBoard uses the OMAP3530 (DSP included). See TI chip specs at http://focus.ti.com/en/multimedia/flash/selection_tools/dsp/dsp.html

-Stefan


#3

As properly mentioned by Stefan, BeagleBone does not have DSP. And this is the reason why we decided for BeagleBoard-xM in our project. It is possible to use h.264 capable cameras with Bone. However, for several reasons I would prefer to use simple (cheap) cameras and perform encoding on the main board. For this purpuses Bone is too weak and that is why we decide for xM with ARM+DSP core.


#4

Awesome. I'll chalk that up to beaglebo... naming confusion. Thanks for the clarification. That puts me all in on the camera's with on chip encoders then.


#5

I'd suggest they name their next product BeagleBox or BeagleBottle ;-)


#6

Just to get the discussion going about future possibilities... it looks like this got leaked recently.

http://www.elinux.org/CircuitCo/BeagleBoneBlack#Board_Description_CONFIDENTIAL


#7

I've been working on porting the code to Raspberry Pi. One of its potential upsides is that it does have a DSP, as well as separate CPU and GPU.

Unfortunately, I am rather inexperienced and don't know how to take full advantage of these. However, this seems like a good chance to discuss the possibilities of alternative architectures.

I'm tracking my progress on a blog:

http://openrovpi242.blogspot.com/


#8

Just some numbers I see streaming using the existing MJPEG streamer. I configure 1920x1080 @ 15fps and I see about 3MB/s to peaks of 5MB/s for network traffic from the beaglebone. The beagle is bouncing between 45 and 70% CPU with node + mjpeg streamer running.

Given the bandwidth we have at the moment, and that we don't have immediate need for the rest of the beaglebone cpu, the current solution seems good enough for now.


#9

What exact config settings did you use, specifically for the resolution?


#10

https://github.com/BrianAdams/openrov-software/blob/cc27cdb14200990...

"1920x1080"

I or someone will need to update the cockpit UI so that it scales with the resolution. You can right click on the video and open in another window to see in full scale.

The underlying mjpg_streaming command-line that gets executed is:

mjpg_streamer -i "/usr/local/lib/input_uvc.so -r 1920x1080 -f 15" -o "/usr/local/lib/output_http.so -p 8090"