Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/globocom/hlsclient
Python HLS Client
https://github.com/globocom/hlsclient
Last synced: about 2 months ago
JSON representation
Python HLS Client
- Host: GitHub
- URL: https://github.com/globocom/hlsclient
- Owner: globocom
- License: other
- Archived: true
- Created: 2012-04-27T20:57:52.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2016-06-02T19:47:30.000Z (over 8 years ago)
- Last Synced: 2024-08-10T21:33:29.324Z (5 months ago)
- Language: Python
- Size: 1.49 MB
- Stars: 105
- Watchers: 106
- Forks: 21
- Open Issues: 11
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- awesome-video - globocom/hlsclient - Python HLS Client. (HLS / Talks Presentations Podcasts)
README
hls-client
==========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
-------------You will need ffmpeg and mediainfo installed.
::
$ ./runtests
.. _HTTP Live Streaming Client: https://developer.apple.com/resources/http-streaming/
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