hlx
A toolkit for processing HLS streams in Node.js
Features
- It exposes
gulp
like interface for processing an HLS stream as Node's object mode stream. - The stream is represented as a series of
data
events of hlx
objects. - To process the stream, users just need to insert their own
Transform
stream between the src
and dest
.
Install
Usage
Example 1 - Default source / destination
const hlx = require('hlx');
const {createDecryptor} = require('hlx-decryptor');
const decryptor = createDecryptor('AES-128');
hlx.src('https://foo.bar/sample.m3u8')
.pipe(decryptor)
.pipe(hlx.dest('/var/www/media/'));
Example 2 - Custom source
const hlx = require('hlx');
const {createReadStream} = require('hlx-src-webdav-pull');
const reader = createReadStream({
url: 'http://foo.bar/webdav',
user: {WebDAV user},
pass: {WebDAV password}
});
hlx.src(reader)
.pipe(decryptor)
.pipe(hlx.dest('/var/www/media/'));
Example 3 - Custom destination
const hlx = require('hlx');
const {createReadStream} = require('hlx-dest-http-server');
const writer = createWriteStream({
port: 8080,
prefix: 'media',
rootPath: '/var/www/media/'
});
hlx.src('https://foo.bar/sample.m3u8')
.pipe(decryptor)
.pipe(hlx.dest(writer));
API
src(location)
Creates a new stream.Readable
object.
params
Name | Type | Required | Default | Description |
---|
location | string or stream.Readable | Yes | N/A | It should be either of a local file path, a url of the playlist, or a custom source object. |
return value
An instance of stream.Readable
.
When the location
is a local file path or a url, the hlx-file-reader
stream will be created. Otherwise, the passed readable stream will be returned back.
dest(location)
Creates a new stream.Writable
object.
params
Name | Type | Required | Default | Description |
---|
location | string or stream.Writable | Np | null | It should be either of a local file path or a custom destination object. |
return value
When the location
is a local file path, the hlx-file-writer
stream will be created. Otherwise, the passed writable stream will be returned back.