Listen, monitor and archive your streams!
Project description
earhorn
Listen, monitor and archive your streams!
Install
If you need to listen or archive an Icecast stream, you will need ffmpeg
:
sudo apt install ffmpeg
Install earhorn from pip (install the s3 extra to upload the segment to an s3 bucket):
pip install earhorn
pip install earhorn[s3]
You can start archiving an Icecast stream by providing a stream url and an archive path:
earhorn \
--stream-url https://stream.example.org/live.ogg \
--archive-path=/to/my/archive
You can also start exporting the Icecast stats as prometheus metrics by providing an Icecast stats url:
earhorn \
--stats-url https://stream.example.org/admin/stats.xml \
--stats-user admin \
--stats-password hackme
Docker
docker pull ghcr.io/jooola/earhorn
Usage
Usage: earhorn [OPTIONS]
ENVIRONMENT VARIABLES:
If a `.env` file is present in the current directory, it will be loaded and can be used to pass environment
variables to this tool.
ARCHIVE STORAGE:
The storage can be defined using a path to a local directory or an url to an s3 bucket. Segments will be saved on
the storage you specified.
To use an s3 bucket, you need to install the `s3` extras (`pip install earhorn[s3]`), use `s3://bucket-name` as
value for the `--archive-path` option and export the s3 bucket credentials listed in the table below:
| Variable | Description | Example |
| ----------------------- | ----------------------------------------- | --------------------------- |
| AWS_ACCESS_KEY_ID | The access key for your bucket user | AKIA568knmklmk |
| AWS_SECRET_ACCESS_KEY | The secret key for your bucket user | mi0y84wu498zxsasa |
| AWS_S3_ENDPOINT_URL | The endpoint to your s3 bucket (optional) | https://s3.nl-ams.scw.cloud |
| AWS_S3_REGION_NAME | Region of your s3 bucket | us-east-2 |
Example: export AWS_S3_ENPOINT_URL="https://s3.nl-ams.scw.cloud"
ARCHIVE SEGMENTS:
To change the segments duration or format, see the ffmpeg documentation for details
about the available options:
https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment
Options:
--listen-port INTEGER Listen port for the prometheus metrics endpoint. [default: 9950]
--hook PATH Path to a custom script executed to handle stream state `events`.
--stats-url TEXT URL to the icecast admin xml stats page.
--stats-user TEXT Username for the icecast admin xml stats page. [default: admin]
--stats-password TEXT Password for the icecast admin xml stats page.
--stream-url TEXT URL to the icecast stream.
--silence-detect-noise TEXT Silence detect noise. [default: -60dB]
--silence-detect-duration TEXT Silence detect duration. [default: 2]
--archive-path PATH Path or url to the archive storage, supported storage are local filesystem and s3.
If defined, the stream will be archived in the storage as segments.
--archive-segment-filepath TEXT
Archive segment filepath. [default:
{year}/{month}/{day}/{hour}{minute}{second}.{format}]
--archive-segment-size INTEGER Archive segment size in seconds. [default: 3600]
--archive-segment-format TEXT Archive segment format. [default: ogg]
--archive-segment-format-options TEXT
Archive segment format options.
--archive-copy-stream Copy the `stream` without transcoding (reduce CPU usage). WARNING: The stream has to
be in the same format as the `--archive-segment-format`.
--help Show this message and exit.
Developmement
To develop this project, start by reading the Makefile
to have a basic understanding of the possible tasks.
Install the project and the dependencies in a virtual environment:
make install
source .venv/bin/activate
earhorn --help
Releases
To release a new version, first bump the version number in pyproject.toml
by hand or by using:
# poetry version --help
poetry version <patch|minor|major>
Run the release target:
make release
Finally, push the release commit and tag to publish them to Pypi:
git push --follow-tags
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for earhorn-0.15.0a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dfc3961d45ade4c93ecf25ee2487ad3c1b0dc332e4eb591acc3576e58cbc4bdd |
|
MD5 | c9912a3b8fd0809cdcf6d2122f3482c3 |
|
BLAKE2b-256 | 27335edbfe44e5af6b685859cc05f78f032aea0bfccc1a847b6d9a10a691c6aa |