Project: Build a DASH-compliant Client-Server (Live) Video Streaming System
Due: Project presentations will be held on 15 November 2019, 18:30-20:30, in Meeting Room 6 (MR6) in building AS6. The project report is due 14 November 2019 (23:59 pm).
Below is an overview of the project.
In this project, your task is to build a DASH-compliant (Dynamic Adaptive Streaming over HTTP -- that is, compatible with BOTH Apple's HTTP Live Streaming (HLS) and MPEG DASH standard) client-server-based live video streaming system 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 individually playable video segments which are, for example, 3 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 the streamlet files that belong to a complete video, the server provides a playlist file (also called a Media Presentation Description (MPD)). The playlist file has a special format; it is basically a XML file for the MPEG DASH standard and M3U8 format file for HLS. To start streaming, the client player loads the playlist file and then starts to download the streamlets that are listed in this file. Your task is to generate such a playlist file onto the server dynamically as the new streamlets are available from one mobile device and support live playback of those streamlets onto another client device.
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 4 on 6 September 2019 and can be found in the slides for that lecture here.
All the students talking this module are given an account (one per team) on our server machine monterosa.d2.comp.nus.edu.sg. The machine is currently running Ubuntu 18.04.2 LTS (Bionic Beaver). The Ubuntu operating system is a popular variant of the Linux operating system.
- Project description (updated draft): here.
- There is an effort to standardize Apple's HTTP Live Streaming and Microsoft's Smooth Streaming techniques. The standard is 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