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.
- Host: GitHub
- URL: https://github.com/mastashake08/dash-manifest-creator
- Owner: mastashake08
- Created: 2023-09-05T03:03:32.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-11-22T22:53:20.000Z (over 2 years ago)
- Last Synced: 2024-05-01T21:49:33.307Z (about 2 years ago)
- Topics: dash, livestream, mpeg-dash
- Language: JavaScript
- Homepage:
- Size: 649 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# DASH Manifest Creator

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
## 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