1.0.0 • Published 4 months ago

mpd-parser-1 v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

mpd-parser

Build Status Greenkeeper badge Slack Status

NPM

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

ababacceptsacornacorn-globalsacorn-jsxacorn-walkadd-streamafteragent-baseaggregate-errorajvanchor-markdown-headeransiansi-colorsansi-escapesansi-regexansi-stylesanymatchare-we-there-yetargparsearray-buffer-byte-lengtharray-ifyarraybuffer.prototype.slicearraybuffer.slicearrifyastral-regexasyncasynckitavailable-typed-arraysbabel-plugin-add-module-exportsbabel-plugin-polyfill-corejs2babel-plugin-polyfill-corejs3babel-plugin-polyfill-regeneratorbacko2bailbalanced-matchbase64-arraybufferbase64idbig-integerbinarybinary-extensionsblobbluebirdbody-parserboundarybrace-expansionbracesbrowser-process-hrtimebrowserslistbrowserstackbrowserstacktunnel-wrapperbuffer-frombuffer-indexof-polyfillbuffersbuiltin-modulesbytescall-bindcallsitescamelcasecamelcase-keyscaniuse-litecaporalchainsawchalkcharacter-entitiescharacter-entities-legacycharacter-reference-invalidchokidarci-infoclean-stackcli-cursorcli-table3cli-truncatecli-widthcliuicode-point-atcollapse-white-spacecolor-convertcolor-namecolorettecolorscombined-streamcommandercomment-parsercommondircompare-funccompare-versionscomponent-bindcomponent-emittercomponent-inheritconcat-mapconcat-streamconnectcontent-typeconventional-changelogconventional-changelog-angularconventional-changelog-atomconventional-changelog-cliconventional-changelog-codemirrorconventional-changelog-conventionalcommitsconventional-changelog-coreconventional-changelog-emberconventional-changelog-eslintconventional-changelog-expressconventional-changelog-jqueryconventional-changelog-jshintconventional-changelog-preset-loaderconventional-changelog-videojsconventional-changelog-writerconventional-commits-filterconventional-commits-parserconvert-source-mapcookiecore-js-compatcore-util-iscosmiconfigcross-envcross-spawncssomcssstylecustom-eventcycledargsdata-urlsdata-view-bufferdata-view-byte-lengthdata-view-byte-offsetdate-formatdateformatdebugdecamelizedecamelize-keysdecimal.jsdedentdeep-isdeepmergedefine-data-propertydefine-propertiesdelayed-streamdelegatesdepddestroydidiffdoctocdoctrinedom-serializedom-serializerdom-walkdomelementtypedomexceptiondomhandlerdomutilsdot-propduplexer2ee-firstelectron-to-chromiumemoji-regexencodeurlend-of-streamengine.ioengine.io-clientengine.io-parserenquirerententitieserror-exes-abstractes-checkes-define-propertyes-errorses-object-atomses-set-tostringtages-to-primitivees6-promisees6-promisifyescaladeescape-htmlescape-string-regexpescodegeneslinteslint-config-videojseslint-plugin-jsdoceslint-plugin-json-lighteslint-plugin-markdowneslint-scopeeslint-utilseslint-visitor-keysespreeesprimaesqueryesrecurseestraverseestree-walkeresutilsetageventemitter3execaexit-hookextendexternal-editoreyesfast-deep-equalfast-json-stable-stringifyfast-levenshteinfast-urifaultfiguresfile-entry-cachefill-rangefinalhandlerfind-rootfind-upfind-versionsflat-cacheflattedfollow-redirectsfor-eachform-dataformatfreshfs-extrafs-readdir-recursivefs.realpathfstreamfunction-bindfunction.prototype.namefunctional-red-black-treefunctions-have-namesgaugegensyncget-caller-fileget-intrinsicget-own-enumerable-property-symbolsget-pkg-repoget-streamget-symbol-descriptiongit-raw-commitsgit-remote-origin-urlgit-semver-tagsgitconfiglocalgithub-url-from-gitglobglob-parentglobalglobalsglobalthisglobalyzerglobrexgopdgraceful-fshandlebarshard-rejectionhas-ansihas-bigintshas-binary2has-colorhas-corshas-flaghas-property-descriptorshas-protohas-symbolshas-tostringtaghas-unicodehasownhosted-git-infohtml-encoding-snifferhtml-escaperhtmlparser2http-errorshttp-proxyhttp-proxy-agenthttps-proxy-agenthuman-signalshuskyiconv-liteignoreimport-freshimurmurhashindent-stringindexofinflightinheritsiniinquirerinternal-slotinterpretis-alphabeticalis-alphanumericalis-array-bufferis-arrayishis-bigintis-binary-pathis-boolean-objectis-bufferis-builtin-moduleis-callableis-ciis-core-moduleis-data-viewis-date-objectis-decimalis-dockeris-extglobis-fullwidth-code-pointis-globis-hexadecimalis-moduleis-negative-zerois-numberis-number-objectis-objis-plain-objis-potential-custom-element-nameis-referenceis-regexis-regexpis-shared-array-bufferis-streamis-stringis-symbolis-text-pathis-typed-arrayis-unicode-supportedis-weakrefis-whitespace-characteris-word-characteris-wslisarrayisbinaryfileisexeisstreamistanbul-lib-coverageistanbul-lib-instrumentistanbul-lib-reportistanbul-lib-source-mapsistanbul-reportsjest-workerjs-tokensjs-yamljsdoc-type-pratt-parserjsdomjsescjson-bufferjson-parse-better-errorsjson-parse-even-better-errorsjson-schema-traversejson-stable-stringify-without-jsonifyjson-stringify-safejson5jsonfilejsonlintjsonparseJSONStreamJSVjust-extendkarmakarma-browserstack-launcherkarma-chrome-launcherkarma-coveragekarma-detect-browserskarma-firefox-launcherkarma-ie-launcherkarma-qunitkarma-safari-applescript-launcherkarma-static-serverkarma-teamcity-reporterkeyvkind-oflevnlines-and-columnslint-stagedlistenercountlistr2load-json-filelocate-pathlodashlodash.camelcaselodash.debouncelodash.differencelodash.getlodash.ismatchlodash.mergelodash.padlodash.padendlodash.padstartlodash.truncatelodash.uniqlog-symbolslog-updatelog4jslru-cachemagic-stringmake-dirmap-objmarkdown-escapesmatchedmdast-util-from-markdownmdast-util-to-stringmedia-typermemorystreammeowmerge-streammicromarkmicromatchmicromistmimemime-dbmime-typesmimic-fnmin-documentmin-indentminimatchminimistminimist-optionsmkdirpmodify-valuesmsmute-streamnatural-comparenegotiatorneo-asyncnice-trynisenode-releasesnode-watchnomnomnormalize-package-datanormalize-pathnot-prereleasenpm-merge-driver-installnpm-run-allnpm-run-pathnpmlognumber-is-nannwsapiobject-assignobject-inspectobject-keysobject.assignon-finishedonceonetimeopencollective-postinstalloptionatoros-shimos-tmpdirp-finallyp-limitp-locatep-mapp-tryparent-moduleparse-entitiesparse-jsonparse5parseqsparseuriparseurlpath-existspath-is-absolutepath-keypath-parsepath-to-regexppath-typepicocolorspicomatchpidtreepifypinkiepinkie-promisepkg-dirplease-upgrade-nodepossible-typed-array-namesprelude-lsprettyjsonprocessprocess-nextick-argsprogresspslpumppunycodeqqjobsqsquerystringifyquick-lruqunitrandombytesrange-parserraw-bodyread-pkgread-pkg-upreadable-streamreaddirprechoirredentregenerateregenerate-unicode-propertiesregenerator-runtimeregenerator-transformregexp.prototype.flagsregexppregexpu-coreregextrasregjsgenregjsparserremark-frontmatterremark-parserepeat-stringreplace-extrequire-directoryrequire-from-stringrequire-main-filenamerequires-portresolveresolve-fromrestore-cursorrfdcrimrafrolluprollup-plugin-external-globalsrollup-plugin-istanbulrollup-plugin-stringrollup-plugin-terserrollup-pluginutilsrun-applescriptrun-asyncrxrxjssafe-array-concatsafe-buffersafe-regex-testsafer-buffersaxessemversemver-comparesemver-regexsendserialize-javascriptserve-staticset-blockingset-function-lengthset-function-namesetimmediatesetprototypeofshebang-commandshebang-regexshell-quoteshelljsshxside-channelsignal-exitsinonslashslice-ansisocket.iosocket.io-adaptersocket.io-clientsocket.io-parsersource-mapsource-map-supportsourcemap-codecspawn-syncspdx-correctspdx-exceptionsspdx-expression-parsespdx-license-idssplitsplit2sprintf-jsstack-tracestate-togglestatusesstreamrollerstring-argvstring-widthstring.prototype.padendstring.prototype.trimstring.prototype.trimendstring.prototype.trimstartstringify-objectstring_decoderstrip-ansistrip-bomstrip-eofstrip-final-newlinestrip-indentstrip-json-commentsstructured-sourcesupports-colorsupports-preserve-symlinks-flagsymbol-treetabletabtabtemp-dirtempfiletersertext-extensionstext-tablethroughthrough2tiny-globtmpto-arrayto-fast-propertiesto-regex-rangetoidentifiertough-cookietr46traversetrimtrim-newlinestrim-trailing-linestroughtslibtsmlbtype-checktype-detecttype-festtype-istyped-array-buffertyped-array-byte-lengthtyped-array-byte-offsettyped-array-lengthtypedarraytypedarray.prototype.sliceua-parser-jsuglify-jsunbox-primitiveunderscoreundici-typesunheritunicode-canonical-property-names-ecmascriptunicode-match-property-ecmascriptunicode-match-property-value-ecmascriptunicode-property-aliases-ecmascriptunifiedunist-util-isunist-util-remove-positionunist-util-stringify-positionunist-util-visitunist-util-visit-parentsuniversalifyunpipeunzipperupdate-browserslist-dbupdate-sectionuri-jsurl-parseurl-toolkitutil-deprecateutils-mergeuuidv8-compile-cachevalidate-npm-package-licensevfilevfile-locationvfile-messagevideojs-generate-karma-configvideojs-generate-rollup-configvideojs-generator-verifyvideojs-standardvoid-elementsw3c-hr-timew3c-xmlserializerwebidl-conversionswhatwg-encodingwhatwg-mimetypewhatwg-urlwhichwhich-boxed-primitivewhich-modulewhich-pm-runswhich-typed-arraywinstonword-wrapwordwrapwrap-ansiwrappywsx-is-stringxml-name-validatorxmlcharsxmlhttprequest-sslxtendy18nyallistyamlyargsyargs-parseryeastyocto-queue
1.0.0

4 months ago