An open API service indexing awesome lists of open source software.

https://github.com/mastashake08/dash-manifest-creator

Create DASH manifests in the browser for live streaming! Useful for browser only live streaming. Youtube DASH compliant.
https://github.com/mastashake08/dash-manifest-creator

dash livestream mpeg-dash

Last synced: over 1 year ago
JSON representation

Create DASH manifests in the browser for live streaming! Useful for browser only live streaming. Youtube DASH compliant.

Awesome Lists containing this project

README

          

# DASH Manifest Creator

![SDE Logo](./logo.svg)

Create DASH manifests in the browser for live streaming!
Shake DASH Encoder (SDE) is a browser-only DASH encoder for Javascript.
It is based on the [Youtube HTTP DASH specification](https://developers.google.com/youtube/v3/live/guides/encoding-with-dash) but can be modified to fit any format.
Created by [Jyrone Parker](https://jyroneparker.com) and is completely open source. If you would like to contribute consider sponsoring me!

# Table Of Contents

- [Installation](#install)
- [Usage](#usage)
- [Bug Reporting](#bug-reporting)
- [Contributing](#contributing)
- [API Reference](#api)

## Installation

This package is available on NPM
`npm i dash-manifest-creator`

## Usage

```javascript
import { MPD } from "dash-manifest-creator";

const mpd = new MPD();
const dash = mpd.createMpd(videoChunk1);

// generate a new manifest
dash.next();

// generate another manifest down the line
dash.next(videoChunk2);

// generate XML string
const str = mpd.getXMLString();

// generate XML file
const file = mpd.getXMLFile();
```

For more docs on the MPD class see the [docs](./docs/index.html) directory.

## Bug Reporting

TODO

## Contributing

TODO

## API

### MPD

**Kind**: global class

- [MPD](#MPD)
- [new MPD(config)](#new_MPD_new)
- [.createMpd(videoData)](#MPD+createMpd)
- [.createPeriod(id)](#MPD+createPeriod)
- [.createAdaptationSet(mimetype)](#MPD+createAdaptationSet) ⇒
- [.createContentComponent(contentType, id)](#MPD+createContentComponent)
- [.createSegmentTemplate(videoData, timescale, duration, startNumber, media)](#MPD+createSegmentTemplate)
- [.getXMLString()](#MPD+getXMLString) ⇒ string
- [.getXMLFile()](#MPD+getXMLFile) ⇒ File

#### new MPD(config)

| Param | Type | Description |
| ------ | ------------------- | ------------------------------------- |
| config | object | configuration object for the manifest |

#### mpD.createMpd(videoData)

**Kind**: instance method of [MPD](#MPD)

| Param | Type | Description |
| --------- | ------------------- | ---------------------------------------------------------- |
| videoData | Buffer | initial video data for the stream, must be less than 100kb |

#### mpD.createPeriod(id)

**Kind**: instance method of [MPD](#MPD)

| Param | Type | Description |
| ----- | -------------------- | -------------------- |
| id | integer | the id of the period |

#### mpD.createAdaptationSet(mimetype) ⇒

**Kind**: instance method of [MPD](#MPD)
**Returns**: a yielded mimeType attribute

| Param | Type | Default | Description |
| -------- | ------------------- | ----------------------------------- | --------------------------- |
| mimetype | string | "video/webm" | The MIME type of the stream |

#### mpD.createContentComponent(contentType, id)

**Kind**: instance method of [MPD](#MPD)

| Param | Type | Default | Description |
| ----------- | -------------------- | ------------------------------ | ------------------------------------------- |
| contentType | string | "video" | The content type of the media being streams |
| id | integer | 1 | The id of the content component |

#### mpD.createSegmentTemplate(videoData, timescale, duration, startNumber, media)

**Kind**: instance method of [MPD](#MPD)

| Param | Type | Default | Description |
| ----------- | -------------------- | ----------------- | ------------------------------------------- |
| videoData | Buffer | | videoData to be streamed for initialization |
| timescale | integer | 1000 | The timescale of the media in microseconds |
| duration | integer | 2000 | The duration of the media in microseconds |
| startNumber | integer | 1 | The start number of the media content |
| media | string | | The media URL for update PUTs |

#### mpD.getXMLString() ⇒ string

**Kind**: instance method of [MPD](#MPD)
**Returns**: string - str - XML string representation of the manifest

#### mpD.getXMLFile() ⇒ File

**Kind**: instance method of [MPD](#MPD)
**Returns**: File - file - A new File named init.mpd which contains the manifest XML