Skip to content
forked from jooola/earhorn

Listen, monitor and archive your Icecast streams!

License

Notifications You must be signed in to change notification settings

loydbanks/earhorn

 
 

Repository files navigation

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:

pip install earhorn

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]

  See the ffmpeg documentation for details about the `--archive-segment-*` 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 to the archive storage directory. If defined, the archiver will save the
                                  `stream` in segments in the storage path.
  --archive-segment-size INTEGER  Archive segment size in seconds.  [default: 3600]
  --archive-segment-filename TEXT
                                  Archive segment filename (without extension).  [default: archive-%Y%m%d_%H%M%S]
  --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

About

Listen, monitor and archive your Icecast streams!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 89.7%
  • Shell 7.0%
  • Makefile 2.5%
  • Dockerfile 0.8%