Cozy Internet Corner

Introduction

This is the Jhms music server. It "livestreams" music over HTTP so that you can share it with the world in an unpredictable radio-like fashion. It runs on linux only. Its goals are to:

  1. Provide an easy to use, radio-like experience that can be integrated into any website using a standard <audio> HTML element.
  2. Allow the flexibility to write your own sources of audio data, by using the filesystem as an abstraction.
  3. Be reasonably stable eventually.
  4. Do all of this with minimal code and dependencies. (I don't have infinite time)

In order to peruse this goal the following features are planned to be implemented eventually, after I take a break from coding for now:

  1. Multi-stream ogg files. This will allow for things like metadata to be embedded in the stream so that you can even write custom Javascript in order to display song titles, lyrics, album covers, etc.
  2. Better user friendliness, like using actual config files, determining the ogg packet size dynamically, etc.

In order to peruse the last goal the following features are not planned, and will not be accepted even as patches:

  1. Support for other audio formats.
  2. Support for other transports or more modern HTTP versions.
  3. Support for HTTPS. I didn't study Cryptography or even CS, so if you need that use a reverse proxy.
  4. Support for other hard to implement stuff.

Current Limitations

The biggest limitation of this program right now, is that it can only parse some ogg files correctly. If you want to ensure your ogg file works, encode it like this:

ffmpeg -i input.ogg -c:a libopus -map_metadata -1 -vn -b:a 128K out.ogg

There is also the limitation that the ogg packet length is determined at compile time only.

Versions

For more information about installation and usage, see the README.md file in the source tarball

v0.1

This is the first version! There are no changes to cover, as there was no last version

Source code tarball

Contributing

If you have suggestions, bugs, or patches, please send them my way via the email button below.

Reply to this post by email ↪

Get my public key here. The fingerprint should be: "E7A3 936F 8840 51E7 94F5 C0CA 04FB 1416 9CFE C84B"