Skip to content

Configuring Icecast outputs

Tomasz Lemiech edited this page Oct 18, 2021 · 9 revisions

Icecast is a HTTP-based protocol used to set up Internet radio services. RTLSDR-Airband can produce MP3 audio streams and send them to one or more Icecast servers for others to listen. To do this, you have to configure an Icecast output for your channel.

Prerequisities

Obviously you need an Icecast server to stream to. Usually you can't feed your streams into someone else's server without permission. So first of all, you need either:

  • to arrange a feed with the server's owner and obtain connection data from him (ie. the server name, port, login, password and Icecast mount point name),
  • to set up your own Icecast server somewhere (might be even on the same Raspberry Pi where you run RTLSDR-Airband). see Setting up your own Icecast server for brief instructions.

Syntax

outputs is a list of outputs where the audio stream of a particular channel is to be routed. An output is a group of settings enclosed in braces { }. The number of outputs per channel is unlimited.

outputs: (
  {
    type = "icecast";
    server = "icecast.server.example.org";
    port = 8080;
    mountpoint = "TWR.mp3";
    username = "source";
    password = "mypassword";
#   tls = "auto|auto_no_plain|transport|upgrade|disabled";
#   name = "Tower";
#   description = "This is a Tower feed from my local airport";
#   genre = "ATC";
  }
);

Want more outputs? Just repeat the braced section several times and separate individual sections with a comma, like this:

outputs: (
  {
    # ... settings for output 1
  },
  {
    # ... settings for output 2
  }
# , ... more outputs here
);

Remember, do not put a comma after the closing brace of the last output. This is a syntax error.

Explanation of keywords

  • type (string, required) - type of this output. Put "icecast" here.
  • server (string, required) - the host name or IP address of the server where RTLSDR-Airband will connect to feed the stream.
  • port (integer, required) - the port number on the server side.
  • mountpoint (string, required) - the Icecast mount point. This is the file part of the stream URL, which distinguishes this stream on the server. For example: if mount point is set to "TWR.mp3", then RTLSDR-Airband will feed the stream to the URL of http://icecast.server.example.org:port_number/TWR.mp3. Icecast server will allow streaming to a particular mount point from a single source at a time, so if you are going to feed several streams to a common server, each stream must have a unique mount point.
  • username (string, required) - the user name (login) which RTLSDR-Airband will send to the server to authenticate itself.
  • password (string, required) - the password for the above user.
  • tls (string, optional) - whether Transport Layer Security shall be used for encryption. Available options are:
    • transport - use TLS in transport mode, aka RFC2818 (no HTTP negotiation, just start TLS straight away)
    • upgrade - use HTTP/1.1 Upgrade mechanism to initiate TLS, aka RFC2817
    • auto - autodetect TLS availability and mode
    • auto_no_plain - like auto but drop connection with an error when TLS is not available.
    • disabled - do not use TLS (the default).
  • name (string, optional) - the name of the stream. It will show up in the listener's player.
  • description (string, optional) - the description of the stream. Most players don't show this.
  • genre (string, optional) - rock, pop, jazz, you know.

Now you may want to read about configuring other output types for your channels:

or jump straight to:

Clone this wiki locally