Cracking MPEG-DASH: How to Optimize Performance for this Evolving Standard

December 11, 2014 1:40 pm

By Rotem Epelbaum

Once upon a time, the video streaming world was HTTP progressive download-based. But then the need for multiple video resolutions for different screen sizes and network speeds spawned adaptive streaming protocols, and the standards war began.

This quickly turned to chaos, as Apple players choked on Microsoft Smooth Streaming content; Microsoft players failed to stream HLS content; and YouTube and Netflix went their own ways with proprietary players and content.

Enter MPEG-DASH, the new kid on the block, which promised to solve the standards war via myriad advanced streaming features that run on all platforms.

To support these options and supply content encoding flexibility, the MPEG-DASH manifest was designed to contain switching and selectable streams (for multiple camera angles, audio streams, and subtitles), recursive and fragmented manifest, segments with variable durations, multiple base URLs and much more.

But developers found it quite challenging to support MPEG-DASH properly. I’ve noticed some limitations with various video players I’ve seen lately:

  • They fail to get to the highest bitrate of the content – so the end user can’t enjoy the high bitrate video that the content provider offers.
  • The bitrate switching policy of each player is not optimal, and together with constantly changing network conditions during playback, the end user may experience very jumpy video streaming with massive bitrate changes.
  • Each player supports only partial MPEG-DASH content – some may not work with the player, and it simply fails!

Together with my amazing R&D team, we decided to solve these issues:

Step 1:
We developed, as part of our AVA (Adaptive Video Accelerator) product, different modules such as a WAN throughput maximizer and bitrate prediction algorithms. Synergy between these modules maximizes the MPEG-DASH playback bitrate.

Step 2:
Our network shaper module dramatically reduces the jumpy bitrate change problems. This module is a great alternative for custom-developed players.

Step 3:
In order to address the critical need to support all kinds of MPEG-DASH content, we’ve followed a very detailed research and implementation procedure:

Since the standard technique for MPEG-DASH is based on the 3GPP’s Adaptive HTTP-Streaming (HDS) protocol, we’ve follow the AHS 3GPP standard – TS 26.234 version 9.9.0 Release 9 (Published 2012-07), and only after that, we’ve started the implementation of the MPEG-DASH international standard, version: ISO/IEC 23009-1:2012 (Published 2013-06-01).

The combination of these steps enables the promised MPEG-DASH features and guarantees a state-of-the-art video streaming experience, as can be seen in the graph below.

Bitrate experienced by MPEG-DASH user, with and without Giraffic

MPEG-DASH