DASH video streaming

  • Duration: Aug - Nov 2011
  • Languages used: Java (for Android), PHP (server side)
  • Platform: Android (ASUS transformer tablet)


I implemented a DASH-compliant video hosting service for a multimedia course project. The user can take a video on an Android tablet/phone, and upload it to a DASH video hosting server. The video can then be played in any DASH-compliant player (such as VLC player) dynamically switching between 3 streamlet qualities.


Dynamic Adaptive Streaming over HTTP (DASH) is a popular stream switching technique, an alternative to the traditional RTP/RTSP/RTCP approach. A video is chunked into small video streamlet files (say 10 sec long), typically available in different qualities for dynamic stream switching. The streamlets are downloaded over conventional HTTP as the video plays. Compared to RTP/RTSP/RTCP, DASH streamlets are much easier to cache, and DASH simplifies server and client implementations, though at the expense of coarser granularity, latency, and control.


The user takes a video on an Android tablet. The video is then chunked into small streamlets (~10 seconds) on the client side itself. These are then uploaded via HTTP to a DASH video hosting server. The server converts these streamlets into different qualities using ffmpeg, and publishes the resulting playlist. Any DASH-compliant player like VLC player can then play the video using the playlist file. The player dynamically switches between streamlet qualities based on the network conditions.

Experience gained

Android programming, MP4 file structure and manipulation, DASH-compliant playlist format