Introduction

In this video I look at video streaming using the Beaglebone black using: RTP, UDP unicasting, and UDP multicasting, which allows one to many streaming. In all of these examples I used the VLC media player to display the video data. The final part of this video goes on to describe how you can build your own software implementation that can display the data using LibVLC and the Qt framework. The advantage of doing this is that you can add your own data processing and controlling functionality into the video display. You could even develop code for capturing multiple streams simultaneously and processing the data — for example, for stereo imaging.

The Video

Please note that I use Camtasia to capture the video stream on the PC desktop for this video and it limits the framerate that I can capture. The actual framerate of the video being streamed appears to be around 30 frames per second, which is very fluid. The camera works best if it is stationary due to the compression algorithm used.

If you use this code or the content of the associated video in your research, please cite:

Molloy, D. [DerekMolloyDCU]. (2013, July, 19). Beaglebone: Streaming Video from Embedded Linux [Video file]. Retrieved from http://youtu.be/-6DBR8PSejw

The Important Blog Posts (in Order)

The first page that is important is the first post on this topic at: Beaglebone: Video Capture and Image Processing  on Embedded Linux using OpenCV, which looks at how you can get started with video capture and image processing on the Beaglebone. It is an introductory video that should give people who are new to this topic a starting point to work from.

Once you have that working, the following posts are the important ones on the topic of streaming video:

  1. Streaming Video using RTP on the Beaglebone Black
  2. UDP Unicast and Multicast Streaming Video using the Beaglebone Black
  3. Custom Video Streaming Player using LibVLC and Qt

These are the core posts that are discussed in the video.

Source Code

The code for this video is available at: github.com/derekmolloy/boneCV/ but the important code is presented below:

The Execution Scripts are as follows:

streamVideoRTP

streamVideoUDP

streamVideoMulti