Project: Build a DASH-compliant Client-Server Video Service

Due: Project presentations will be on 16 November 2011 (in class). The project report is due 16 November 2011 (in class).

Below is an overview of the project.

Project Scope

In this project, your task is to build a small DASH-compliant (Dynamic Adaptive Streaming over HTTP) - that is, compatible with Apple's Live Streaming - client-server-based video hosting service on top of a LAMP stack (Linux, Apache, MySQL, PHP).

The DASH approach of streaming is becoming very popular. It is basically a replacement for the RTSP/RTP/RTCP based approach to streaming. With DASH, the server is a simple HTTP web server (e.g., Apache). The media (video) is divided into small segments which are, for example, 10 seconds long. These segments are also called streamlets. The client media player retrieves the streamlets from the web server, one at a time, and plays them without interruption. For the client to know all the streamlet files that belong to a complete video, the server provides a playlist file. The playlist file has a special format (it is basically an XML file) and its extension is .m3u8. To start streaming, the client player loads the .m3u8 file and then starts to download the streamlets that are listed in this file.

To submit your project, create a tarball of all yours sources, (please exclude sample audios, object files etc.), put it into IVLE workbin. Your source code should be properly commented with explanations to help us understand your code. You must include a README.txt file that explains how your code works.

How to Compile/Run under Android and Linux

You will be given a number of utilities that will help you to get the project done. Additional information will be given during the lecture on 14 September 2011 and can be found in the slides for that lecture here.

Your software to record and upload video should run under Android 3.2 Honeycomb. We will be using the Asus Transformer tablet as client machine.


All the students talking this module are given an account on our server machine The machine is currently running CentOS 4.8, but it will be upgraded shortly to CentOS 6.0. The CentOS operating system is basically a free distribution of the RedHat Enterprise Linux (RHEL) OS.

Additional information:

  • Project description (preliminary draft): here.
  • There is an effort to standardize Apple's HTTP Live Streaming and Microsoft's Smooth Streaming techniques. The standard will likely be called Dynamic Adaptive Streaming over HTTP (DASH). A draft document about DASH is available here.
  • Apple's proposed RFC can be found here.
  • Slides: Powerpoint