mpd parser
Table of Contents
Installation
npm install --save mpd-parser
Usage
// get your manifest in whatever way works best // for example, by reading the file from the filesystem in node // or using fetch in a browser like so: const manifestUri = 'https://example.com/dash.xml'; const res = await fetch(manifestUri); const manifest = await res.text(); // A callback function to handle events like errors or warnings const eventHandler = ({ type, message }) => console.log(`${type}: ${message}`); var parsedManifest = mpdParser.parse(manifest, { manifestUri, eventHandler });
If dealing with a live stream, then on subsequent calls to parse, the previously parsed
manifest object should be provided as an option to parse using the previousManifest
option:
const newParsedManifest = mpdParser.parse( manifest, // parsedManifest comes from the prior example { manifestUri, previousManifest: parsedManifest } );
Parsed Output
The parser ouputs a plain javascript object with the following structure:
Manifest { allowCache: boolean, contentSteering: { defaultServiceLocation: string, proxyServerURL: string, queryBeforeStart: boolean, serverURL: string }, endList: boolean, mediaSequence: number, discontinuitySequence: number, playlistType: string, playlists: [ { attributes: {}, Manifest } ], mediaGroups: { AUDIO: { 'GROUP-ID': { default: boolean, autoselect: boolean, language: string, uri: string, instreamId: string, characteristics: string, forced: boolean } }, VIDEO: {}, 'CLOSED-CAPTIONS': {}, SUBTITLES: {} }, dateTimeString: string, dateTimeObject: Date, targetDuration: number, totalDuration: number, discontinuityStarts: [number], segments: [ { byterange: { length: number, offset: number }, duration: number, attributes: {}, discontinuity: number, uri: string, timeline: number, key: { method: string, uri: string, iv: string }, map: { uri: string, byterange: { length: number, offset: number } }, 'cue-out': string, 'cue-out-cont': string, 'cue-in': string } ] }
Including the Parser
To include mpd-parser on your website or web application, use any of the following methods.
<script> Tag
This is the simplest case. Get the script in whatever way you prefer and include it on your page.
<script src="//path/to/mpd-parser.min.js"></script> <script> var mpdParser = window['mpd-parser']; var parsedManifest = mpdParser.parse(manifest, { manifestUri }); </script>
Browserify
When using with Browserify, install mpd-parser via npm and require the parser as you would any other module.
var mpdParser = require('mpd-parser'); var parsedManifest = mpdParser.parse(manifest, { manifestUri });
With ES6:
import { parse } from 'mpd-parser'; const parsedManifest = parse(manifest, { manifestUri });
RequireJS/AMD
When using with RequireJS (or another AMD library), get the script in whatever way you prefer and require the parser as you normally would:
require(['mpd-parser'], function(mpdParser) { var parsedManifest = mpdParser.parse(manifest, { manifestUri }); });
License
Apache-2.0. Copyright (c) Brightcove, Inc
