Skip to main content

This is a simple Python HTTP Live Streaming Client. It consumes a list of remote playlists, and saves all needed files to serve the playlist locally: the key, segments, and a modified m3u8 with paths normalized.

It also supports backups, i.e., if the same playlist is available on more than one server, it will track each server status and will switch to the backup if needed.

Through the config.ini it’s possible to customize where the files will be saved and what is the URL that provides servers info via JSON.

The JSON must be something like:

{
    "streams": [
        "nasa": {
            "input-path": "/msfc/Edge.m3u8",
            servers: [
                "http://liveips.nasa.gov.edgesuite.net"
            ]
        }
    ]
}

Variant Playlist Generation

hlslcient can consume multiple playlists and generate a variant playlists grouping then.

To do so, include a bandwidth for each stream and add an action to combine them in the JSON:

{
    "streams": {
        "Nasa-low": {
            "input-path": "/msfc/Edge.m3u8",
            "servers": ["http://liveips.nasa.gov.edgesuite.net"],
            "bandwidth": 254082
        },
        "Nasa-medium": {
            "input-path": "/msfc/3G.m3u8",
            "servers": ["http://liveips.nasa.gov.edgesuite.net"],
            "bandwidth": 460658
        },
        "Nasa-high": {
            "input-path": "/msfc/Wifi.m3u8",
            "servers": ["http://liveips.nasa.gov.edgesuite.net"],
            "bandwidth": 1080434
        }
    },

    "actions": [
        {
            "type": "combine",
            "input": ["Nasa-low", "Nasa-medium", "Nasa-high"],
            "output": "/msfc/nasa_mbr.m3u8"
        }
    ]
}

Transcoding

hlsclient is also able to create an audio only track from a video stream using FFMPEG.

To do so, add a transcode action an include the new stream on a combine action:

"actions": [
    {
        "type": "combine",
        "input": ["Nasa-audio-only", "Nasa-low", "Nasa-medium", "Nasa-high"],
        "output": "/msfc/nasa_mbr.m3u8"
    },
    {
        "type": "transcode",
        "input": "Nasa-low",
        "output": {
            "audio": {
                "Nasa-audio-only": {
                    "path": "Nasa-audio-only.m3u8",
                    "audio-bitrate": 64000,
                    "bitrate": 65000
                }
            }
        }
    }
]

Encryption

If you set encryption=true in the config file, hlsclient will automatically encrypt all streams with a random AES-128 cipher.

Running

To run the client, simply run:

$ python -m hlsclient

Running tests

We use py.test for testing.

$ py.test

FFmpeg Installation

In order to use the current version of hlsclient with transcoding support, you must have ffmpeg installed with libaac and libx264. Download them and compile FFfmpeg like this:

  • libaac:

    ./configure && make && sudo make install
  • libx264:

    ./configure --enable-shared && make && sudo make install
  • FFmpeg:

    ./configure --enable-libx264 --enable-gpl --enable-libfaac --enable-nonfree --enable-shared && make && sudo make install

The tested versions were:

  • libaac: faac-1.28

  • libx264: x264-snapshot-20121030-2245

  • FFmpeg: N-46213-g976175f

Metadata

Release files for hlsclient 0.4.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hlsclient 0.4.1.1
File Size Uploaded Provenance Actions
hlsclient-0.4.1.1.tar.gz 11.8 kB Without provenance Details for hlsclient-0.4.1.1.tar.gz

Release files / hlsclient-0.4.1.1.tar.gz

Download URL hlsclient-0.4.1.1.tar.gz
Size 11.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d429c9bd57c08f984ae32abe800a5071bb39574b0a59a3d89bd9fe873868b2dc
BLAKE2b-256 checksum
How to use checksums
d403ade89399ba6e87e89331cd449b5823e04f892e6448ae430e4b59531e3407
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for hlsclient 0.4.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.1.1 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page