Socket
Socket
Sign inDemoInstall

mpd-parser

Package Overview
Dependencies
4
Maintainers
16
Versions
47
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

mpd-parser


Version published
Weekly downloads
418K
decreased by-2.91%
Maintainers
16
Created
Weekly downloads
 

Package description

What is mpd-parser?

The mpd-parser npm package is used to parse MPEG-DASH (Dynamic Adaptive Streaming over HTTP) MPD (Media Presentation Description) files. It provides tools to read and interpret the structure and content of MPD files, which are XML-based manifests that describe media content and how it should be streamed.

What are mpd-parser's main functionalities?

Parsing MPD files

This feature allows you to parse an MPD XML string into a JavaScript object. The code sample demonstrates how to use the `mpd-parser` package to parse a simple MPD XML string and log the resulting JavaScript object.

const mpdParser = require('mpd-parser');
const mpdXml = '<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" type="static" mediaPresentationDuration="PT0H4M40.414S" minBufferTime="PT1.500S"><Period><AdaptationSet mimeType="video/mp4" codecs="avc1.4d401e" width="640" height="360" frameRate="30" startWithSAP="1" segmentAlignment="true"><Representation id="1" bandwidth="500000"><BaseURL>video/</BaseURL><SegmentList timescale="1000" duration="2000"><SegmentURL media="segment1.m4s" /><SegmentURL media="segment2.m4s" /></SegmentList></Representation></AdaptationSet></Period></MPD>';
const parsedManifest = mpdParser.parse(mpdXml);
console.log(parsedManifest);

Generating MPD files

This feature allows you to generate an MPD XML string from a JavaScript object. The code sample demonstrates how to use the `mpd-parser` package to convert a JavaScript object representing an MPD manifest into an XML string.

const mpdParser = require('mpd-parser');
const manifestObject = {
  type: 'static',
  mediaPresentationDuration: 'PT0H4M40.414S',
  minBufferTime: 'PT1.500S',
  periods: [
    {
      adaptationSets: [
        {
          mimeType: 'video/mp4',
          codecs: 'avc1.4d401e',
          width: 640,
          height: 360,
          frameRate: 30,
          startWithSAP: 1,
          segmentAlignment: true,
          representations: [
            {
              id: '1',
              bandwidth: 500000,
              baseURL: 'video/',
              segmentList: {
                timescale: 1000,
                duration: 2000,
                segmentURLs: [
                  { media: 'segment1.m4s' },
                  { media: 'segment2.m4s' }
                ]
              }
            }
          ]
        }
      ]
    }
  ]
};
const mpdXml = mpdParser.generate(manifestObject);
console.log(mpdXml);

Other packages similar to mpd-parser

Changelog

Source

0.19.0 (2021-08-24)

Features

  • add presentationTime as an attribute on each SegmentList segment (#142) (478abb0)

Chores

BREAKING CHANGES

  • the presentationTimeOffset attribute has been removed from output

<a name="0.18.0"></a>

Readme

Source

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();

var parsedManifest = mpdParser.parse(manifest, { manifestUri });

Parsed Output

The parser ouputs a plain javascript object with the following structure:

Manifest {
  allowCache: boolean,
  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, manifestUrl);
</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, manifestUrl);

With ES6:

import { parse } from 'mpd-parser';

const parsedManifest = parse(manifest, manifestUrl);

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, manifestUrl);
});

License

Apache-2.0. Copyright (c) Brightcove, Inc

Keywords

FAQs

Last updated on 24 Aug 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc