A number of reference and demonstration MPEG DASH players, player libraries and packagers are publicly available.
- dash.as, an open source ActionScript project by Castlabs, allowing for the playback of DASH-IF on-demand and live profiles from Flash Player. Adobe Access DRM is supported via a professional version.
- Flash playing DASH, a project by Digital Primates.
- GPAC – a DASH client is provided under both an open-source LGPL license (available at http://gpac.io.) and a commercial license (available at http://www.gpac-licensing.com).
The client is capable of loading and playing a large subset of the DASH specification, supporting both MPEG-2 TS and ISOBMFF profiles. The DASH access engine and the HTTP downloaders are implemented as part of libgpac, the core library of GPAC, and can be used without any dependency to the media player. The GPAC client, usually called Osmo4 or MP4Client, supports the following features for DASH:
- Playback from local hard drive or HTTP servers;
- Playback of Live, Main, and Simple profiles with bitrate adaptation;
- Support for non bitstreamSwitching Representations using separated initialization segments;
- Support for @group attribute, and automatic (de)selection of sets inside a group. The client supports language-based selection of adaptation sets.
- Quality can be switched manually (using ctrl+h and ctrl+l shortcuts), can be set to switch every N segments or can be decided by the internal rate-adaptation controller.
- Documentation for the GPAC DASH player is available on GPAC Web site at http://gpac.io/player/features/dash/
Sample Segmenters and Packagers
- eDASH Packager is a media packaging C++ SDK and toolset intended for content providers wanting to package and optionally encrypt DASH content. It supports packaging Video-On-Demand content, conversion of IPTV streams to DASH Live streams, encrypting content using Widevine DRM or specified keys and PSSH boxes, and conversion of legacy Widevine DRM (WVM) content to DASH. More details at https://github.com/google/edash-packager.
- MP4BOX – A sample DASH segmenter is provided in MP4Box as part of GPAC, available at http://gpac.io. The segmenter is capable of producing media files conformant to various DASH profiles, along with their corresponding MPD. The software does not encode or transcode media, and therefore requires alignment of stream access points (e.g., identical GOP structure) among the different representations.
- Rebaca MPEG DASH Segmenter – a complete C++ server based Segmenter capable of generating mp4 file segments conformant to the DASH profiles namely ( urn:mpeg:dash:profile:isoff-on-demand:2011, urn:mpeg:dash:profile:isoff-main:2011 ) along with their corresponding MPDs. See the website for details of the features and validations offered by this segmenter. In addition to MPEG-DASH, Rebaca Technologies has deep domain expertise in Video delivery and consumption with expertise in different Adaptive bit streaming technologies including HLS, Silverlight smooth streaming, RTSP/RTP, adaptive video players for mobile/tablets. For more information on the company, please visit www.rebaca.com.
- castLabs Dash Encrypt Packager -a DASH encryption tool published as another open source project: http://castlabs.com/products/dash-encrypt/. The code repository is available on Github: https://github.com/castlabs/dashencrypt. It supports DASH segmenting for the on-demand profile as well as CENC encryption (but doesn’t create PSSH boxes, we have that available on request for all DRMs we support). We support signaling of all multichannel audio formats (AAC, Dolby, DTS) as added feature. The technical basis is the mp4parser project is located at: https://github.com/sannies/mp4parser
- Bento4 – an open-source, multi-platform, C++ class library and tools designed to read and write ISO-MP4 files. It includes a range of options for creating MPEG-DASH presentations, including isoff-live, isoff-ondemand and hbbtv profiles, and comes with widely tested support for encryption and DRM (Marlin, PlayReady, Widevine and others). It is compatible with many DASH-capable clients, including dash.js. More details at http://www.bento4.com.
Sample DASH libraries
- libdash – Please find the announcement of our new version of libdash at bitmovin including slides (slides). libdash implements the full MPEG-DASH standard according to ISO/IEC 23009-1:2012. It provides an object orient (OO) interface to the MPEG-DASH standard – XML-based MPD and media elements (segments) – and provides external interfaces for:
- the DASH streaming control, i.e., the adaptation logic (download scheduler and probably other terms exist) which determines which segment to download next based on a given client context;
- the segment parser, i.e. to handle downloaded segments (ISO base media file format, MPEG-2 transport stream) and encapsulated coding formats; and
- the media player which is finally responsible to decode and render the media presentation.
libdash provides means to access the information within the MPD and to schedule the download of the media elements (segments) described by the MPD. libdash deliberately does not provide implementations for the above mentioned modules (DASH streaming control, segment parser, and media player) as these may vary across different use cases and deployment scenarios and also may go beyond what is normatively defined within ISO/IEC 23009-1:2012 (e.g., include codecs). The motivation behind this approach is to provide developers a tool which fully supports the standard and enables the integration thereof within a media ecosystem. We believe its interfaces are well designed in order to allow for a broad adoption of various use cases.
- ITEC – available at http://www-itec.uni-klu.ac.at/dash/?page_id=605, the validator offers the possibility to validate DASH manifest files. This can either be done via file upload, URL or direct input of the description. Furthermore, the validator checks not only schema compliance but also semantic compliance of a description as specified in the corresponding parts of the standard.
- Available at http://dashif.org/conformance.html, the validator offers the possibility to validate DASH content (based on ISO-BMFF):
- The timing embedded in each representation is correct or not (segment index ‘sidx’, ‘tfdt’, …)
- Mandatory DASH parameters are properly encoded (SAP, fragment offsets,…).
- Cross-representation checks (Segment/subsegment alignment, bitstream switching).
- Whether there are missing segments.