MPEG-DASH Streaming Test

MPEG-DASH streaming test with videojs and Nuevo plugin

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) is international standard ratified by MPEG and ISO. In recent years, MPEG-DASH has been integrated into new standardization efforts, e.g., the HTML5 Media Source Extensions (MSE) enabling the DASH playback via the HTML5 video and audio tag, enabling DRM-protected playback in web browsers. Today, MPEG-DASH is gaining more and more deployments, and services such as Netflix or Google recently switched to this new standard.
The basic idea of MPEG-DASH is as to chop the media file into segments which can be encoded at different bitrates or resolutions. The segments are provided on a Web server and can be downloaded through HTTP standard compliant GET requests. The adaptation to the bitrate or resolution is done on the client side for each segment.
MPD format (Media Presentation Description) used for MPEG-DASH streaming is a hierarchical data model. Each MPD may contain one or more Periods. Each of those Periods contains media components such as video components (different view angles, different codecs), audio components (different languages, comments), subtitle or caption components, etc. Main benefits of MPEG-DASH are:
  • reduction of startup delays and buffering/stalls during the video
  • continued adaptation to the bandwidth situation of the client
  • use of existing and cost-effective HTTP-based CDNs, proxies, caches
  • bypassing of NATs and Firewalls by the usage of HTTP
  • Encryption, delivery & utilization of multiple concurrent DRM schemes from the same file
  • and much more...
Below you have the most basic videojs player setup code sample for MPEG-DASH playback, with Nuevo plugin included.


<script type=text/javascript" src="//domain.com/videojs/video.min.js"></script>
<script type=text/javascript" src="//domain.com/videojs/nuevo.min.js"></script>

<video id="myplayer" class="video-js vjs-default-skin" width+"640" height="360" controls>
 <source src="//path/to/manifest.mpd" type="application/dash+xml" />
</video>

<script>
var player = videojs('myplayer');
player.nuevoPlugin({
	logo: "//domain.com/path/to/logo.png",
	logourl: "/domain.com"
});
</script>



Same like for HLS type of streaming, Nuevo plugin automatically detects available resolution for MPEG-DASH stream to display it and to allow switch between qualities. In example abpove you can watch how resolution is changing from 360p to 1080p in Auto mode when you resize browser.

Please note IE 11 on Windows 7 will not play MPEG-Dash viedo. MPEG/Dash format is also not supported natively by iOS. iOS also lacks support for MediaSource extension. Using Nuevo plugin you can always provide second fallback video source eg. in MP4 format to be sure that video will always play. It's even possible to provide multiple qualities MP4 fallback videos! You can check example above on iPhone/iPad how fallback video is playing, with option to switch between qualities.

Sources abiout MPEG-DASH:
------------------------
Great article about MPEG-DASH on Bitmovin website https://bitmovin.com/dynamic-adaptive-streaming-http-mpeg-dash/
Yet another good article ablout MPEG-DASH standard https://www.encoding.com/mpeg-dash/
Encoding video for MPEG-DASH conetnt https://bitmovin.com/mp4box-dash-content-generation-x264/