Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/felixge/node-m3u
A node.js module for creating m3u / m3u8 files.
https://github.com/felixge/node-m3u
Last synced: about 2 months ago
JSON representation
A node.js module for creating m3u / m3u8 files.
- Host: GitHub
- URL: https://github.com/felixge/node-m3u
- Owner: felixge
- License: mit
- Created: 2011-04-11T20:24:20.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-12-09T23:00:47.000Z (about 11 years ago)
- Last Synced: 2024-10-20T12:35:39.579Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 131 KB
- Stars: 88
- Watchers: 9
- Forks: 28
- Open Issues: 1
-
Metadata Files:
- Readme: Readme.md
- License: License
Awesome Lists containing this project
README
# node-m3u
A node.js module for creating m3u / m3u8 files. Supported dialects are [m3u][],
[extended m3u][] and [http live streaming m3u][].[m3u]: http://en.wikipedia.org/wiki/M3U
[extended m3u]: http://en.wikipedia.org/wiki/M3U#Extended_M3U_directives
[http live streaming m3u]:http://tools.ietf.org/html/draft-pantos-http-live-streaming## Current Status
This module is still new, but I'm going to use it in production over at
[transloadit.com][] next.[transloadit.com]: http://transloadit.com/
## Installation
npm install m3u
## Usage
The default `Writer` class can be used to create basic m3u files:
var writer = require('m3u').writer();
// A comment.
writer.comment('I am a comment');// An empty line.
writer.write(); // blank line// A playlist item, usually a path or url.
writer.file('foo.mp3');console.log(writer.toString());
The `ExtendedWriter` supports all methods of the normal `Writer`, as well as
additional capabilities defined by the extended m3u format.var writer = require('m3u').extendedWriter();
// Adds a playlist item preceeded by an optional EXTINF tag for the duration.
// and title of the item.
writer.file('bar.mp3');
writer.file('bar.mp3', 23);
writer.file('bar.mp3', 23, 'Artist - Title');console.log(writer.toString());
The `HttpLiveStreamingWriter` supports all methods of the `ExtendedWriter`, as
well as additional capabilities defined by Apple:var writer = require('m3u').httpLiveStreamingWriter();
// EXT-X-TARGETDURATION: Maximum media file duration.
writer.targetDuration(10);// EXT-X-MEDIA-SEQUENCE: Sequence number of first file (optional).
// (optional)
writer.mediaSequence(0)// EXT-X-PROGRAM-DATE-TIME: The date of the program's origin, optional.
// (optional)
writer.programDateTime('2011-04-11T21:24:06Z');// EXT-X-ALLOW-CACHE: Set if the client is allowed to cache this m3u file.
// (optional)
writer.allowCache(true);
writer.allowCache(false);// EXT-X-PLAYLIST-TYPE: Provides mutability information about the m3u file.
// (optional)
writer.playlistType('EVENT');
writer.playlistType('VOD');// EXT-X-ENDLIST: Indicates that no more media files will be added to the m3u file.
// (optional)
writer.endlist();// EXT-X-VERSION: Indicates the compatibility version of the Playlist file.
// (optional)
writer.version(3);// Adds a playlist as the next item preceeded by an EXT-X-STREAM-INF tag.
writer.playlist('another.m3u', {
bandwidth: 3000000, // required
programId: 1,
codecs: ['avc1.42001e', 'mp4a.40.34'],
resolution: '640x480',
});// EXT-X-DISCONTINUITY: Indicates that the player should expect the next video segment to be a different resolution or have a different audio profile than the last.
writer.discontinuity();console.log(writer.toString());
## Todo
I don't have plans for more features at this point, except bug fixes.
## Contributing
Stuff I probably won't have time to do myself, and would love to get patches for:
* Implement the ability to read m3u files
* Support node.js's writeable stream interface for the writers
* `HttpLiveStreamingWriter#key()` (EXT-X-KEY)
* Support JS date objects for `HttpLiveStreamingWriter#programDateTime()`## License
node-m3u is licensed under the MIT license.