hlsorigin 0.0.16
Command line tools for HLS manipulation at origin or edge server
License: MIT

Description
===========

This package contains useful scripts to manipulate HLS manifests at
origin or edge server.

+---------------------+-----------------------------------------------------------------------------+
| Script              | Description                                                                 |
+=====================+=============================================================================+
| hls-capture         | Create a VOD playlist between two timestamps in a LIVE playlist             |
+---------------------+-----------------------------------------------------------------------------+
| hls-live-from-vod   | Create a LIVE playlist from a set of VOD playlists                          |
+---------------------+-----------------------------------------------------------------------------+
| hls-startover       | Create a LIVE playlist from a specific starttime in another LIVE playlist   |
+---------------------+-----------------------------------------------------------------------------+

Preconditions
-------------

These scripts are based on the assumption that all HLS manifest files
and segments are archived at the origin server where these scripts are
executed. The archive for a specific live stream contains the history
for all HLS manifest updates. For example:

Live HLS stream called 'foo' is archived in the directory /archive/foo
on the server. It contains all updated HLS manifest files with a unix
timestamp when it was last updated.

::

    master800.m3u8-1472977456
    master800.m3u8-1472977465
    master800.m3u8-1472977475

All video segments are also stored in the same directory.

Installation
============

From source

::

    git clone https://github.com/Eyevinn/hls-origin-scripts.git
    cd hls-origin-scripts
    python setup.py install

From Python Package Index

::

    pip install hlsorigin

Usage
=====

These scripts are executed by the request handler at the origin
webserver. The scripts output the generated manifest file to stdout

hls-capture
-----------

Generate a VOD playlist from a LIVE HLS where segments and manifest
files are archived at /hlsarchive/stream/. A 20 minutes VOD manifest
from 11:45 to 12:05 is created in this case.

::

    hls-capture /hlsarchive/stream/ --mediaplaylist master800.m3u8 --in "2016-09-04 11:45:00" --out "2016-09-04 12:05:00"

By default any cueout periods (e.g. ads) are removed and a discontinuity
tag is added in the generated manifest. Available options:

::

    --help                  show help message and exit
    --in TS             YYYY-mm-dd HH:MM:SS
    --out TS                YYYY-mm-dd HH:MM:SS
    --mediaplaylist PL  name of media playlist
    --noremovecueout        do not remove segments in cue out periods

hls-startover
-------------

Generate a new LIVE HLS playlist with a new start position. This is
useful when needing a startover functionality but the user should not be
able to watch before the startover position.

::

    hls-startover /hlsarchive/stream/ --mediaplaylist master800.m3u8 --startover "2016-09-04 16:25:00"

Available options:

::

    --help                  show help message and exit
    --mediaplaylist PL  name of media playlist
    --startover TS      YYYY-mm-dd HH:MM:SS

hls-live-from-vod
-----------------

TBD

Contribution
============

We welcome contributions to this project. Just follow the normal
procedures by forking this repository, create a topic branch for your
fix and then submit a pull request.

License
=======

See LICENSE for details