MPEG DASH (Dynamic Adaptive Streaming over HTTP) is a standard for adaptive streaming over HTTP that has been ratified as an ISO standard (ISO/IEC 23009-1) and has the potential to replace existing proprietary technologies like Microsoft Smooth Streaming, Adobe Dynamic Streaming and Apple HTTP Live Streaming (HLS). Adobe, Apple and Microsoft are active participants in the DASH Promoters Group, along with Netflix and Akamai.
Adaptive streaming involves encoding multiple instances of a live or on-demand source file and making them available to various clients depending upon their delivery bandwidth and CPU processing power. By monitoring CPU utilisation and/or buffer status, adaptive streaming technologies can change streams when necessary to ensure continuous playback or to improve the experience.
One key difference between adaptive streaming technologies is the streaming protocol used. For example, Adobe’s RTMP-based Dynamic Streaming uses Adobe’s proprietary Real Time Messaging Protocol (RTMP), which requires a streaming server and a near-continuous connection between the server and player. Requiring a streaming server can increase implementation cost and RTMP-based packets can be blocked by firewalls.
A near-continuous connection means that RTMP can’t take advantage of caching on plain-vanilla servers like those used for Hypertext Transfer Protocol (HTTP) delivery, the delivery protocol used by Apple’s HTTP Live Streaming (HLS), Microsoft’s Smooth Streaming, and Adobe’s HTTP-based Dynamic Streaming (HDS). All three of these delivery solutions use standard HTTP web servers to deliver streaming content removing the need for a streaming server. In addition, HTTP packets are firewall friendly and can take advantage of general purpose HTTP caching mechanisms already deployed across the web and inside enterprises. This latter capability should both decrease total bandwidth costs associated with delivering the video, since more data can be served from web-based caches rather than the origin server, and improve quality of service, since cached data is generally closer to the viewer and more easily retrievable.
Under the hood
DASH works very similarly to other existing adaptive streaming protocols. Available stream content is presented to the player in a manifest (index) file. In DASH, the manifest is called a Media Presentation Description (MPD) file, which is in XML format. The MPD is analogous to an HLS m3u8 file, a Smooth Streaming Manifest file or an HDS f4m file. After the MPD is delivered to the client, content – such as video, audio, subtitles or other data – is downloaded to clients over HTTP as a sequence of video files that is played back contiguously.
The MPD describes the content that is available, including URL addresses of stream chunks, byte-ranges, different bitrates, resolutions, and content encryption mechanisms. The task of choosing which adaptive stream bitrate and resolution to play, and changing to different bitrate streams according to network conditions, is done by the client (again, similar to other adaptive streaming protocols). In fact the MPEG DASH standard does not prescribe any client-specific playback functionality, rather it pertains to the formatting of the content and associated MPDs only.
There are two file segment types allowed in DASH – MPEG2 TS and ISO Base media file format (ISO BMFF). MPEG2 TS is what HLS currently uses, and ISO BMFF is what Smooth Streaming and HDS currently use. This allows for a relatively easy migration of existing adaptive streaming content to MPEG DASH, as the media segments can often stay the same, and only the index files need to be migrated to an MPD format.
MPEG DASH defines and allows for different profiles to be created. A profile is a set of restrictions of media formats, codecs, protection formats, bitrates, resolutions, or other aspects of the content. For example, the DASH spec defines a profile for ISOBMFF basic on-demand. MPEG DASH doe snot resolve the HTML5 codec issue. That is, DASH is codec agnostic, which means that it can be implemented in either H.264 or WebM. Since neither codec is universally supported by all HTML5 browsers, this may mean that DASH users will have to create multiple streams using multiple codecs.