Icecast.org, the project, is a collection of programs and libraries for streaming audio over the Internet. This includes:
Icecast is a streaming server, which can stream audio (and video) to listeners/viewers. It supports Ogg (Vorbis, Theora), Opus, FLAC and WebM (VP8/VP9), nonfree codecs/formats like MP4 (H.264, MPEG4), M4A, NSV, AAC and MP3 might work, but we do not officially support those.
libshout is a library for communicating with and sending data to an Icecast server. It handles the socket connection, the timing of the data, and prevents bad data from getting to the Icecast server.
IceS is a program that sends audio data to an icecast server to broadcast to clients. IceS can either read audio data from disk, such as from Ogg Vorbis files, or sample live audio from a sound card and encode it on the fly.
No. This kind of “streaming” is very different from what Icecast does. In Icecast you usually have a “station” (mountpoint) sourced by a source client like IceS and streamed by Icecast to a large amount of listeners. This implies that all listeners of that mountpoint get the same stream, so an individual listener can’t pause the stream or add different tracks without affecting all other users.
As already mentioned, Spotify and co. do not really “stream” in the classic meaning of the term. Actually what they in most cases do is provide the client with the individual songs and the client takes care of all the other things, like play/pause and playing the tracks in the desired order. It’s basically just simple file serving, which webservers like nginx or Apache do.
A mountpoint is the path a resource such as a stream, or a static, or a generated file is is associated with. The mountpoint is used when accessing the the resource. Each mountpoint is associated with exactly one resource.
Icecast allows virtually any number of sources to mount different mountpoints at the same time. This permits streaming a number of different streams or channels with different content.
Mountpoints are created automatically when a resource is connected to them.
There is no need to configure them at all. Mountpoints under “/admin/
” are special
as they provide the API, and administration interface.
Mountpoints do not contain query parameters, or fragment identifiers.
A source is a process that mounts a mountpoint. In simple words it is a software that connects a stream at a path on the Icecast server.
The mountpoint is created as the software connects. Therefore if the source uses the
default credentials (username “source
”, and the password from the <source-password>
tag)
there is no need to configure anything on the Icecast side.
There is none. Mountpoints are created automatically when a source mounts (connects to) them.
Icecast is being developed on Linux and Windows, and is being tested with major Unices.
Go to the Icecast Documentation Page and follow the instructions for your Icecast version there.
We strongly advise you to not copy a config from some website, it’s likely outdated or wrong. Please read the next question for more advise.
You should start with the default config and only change the passwords. If you
need more things, carefully read the documentation and only add/change what you
really need.
Most problems occur when over-configuring Icecast.
Icecast used to have a graphical user interface on Windows, but that was deprecated in 2.3.3
as it wasn’t frequently used and hard to maintain. Considering that most of the things the GUI
could do now are possible using the Icecast web interface, it’s not needed anymore.
The black window with text you see is the command line running the Icecast server, just keep that
window open. When you want to quit Icecast, hit Ctrl+C and confirm that you want to quit.
We do not have service capabilities in Icecast anymore, currently. Please see this Wiki page for instruction how to set up Icecast as a service using a third party service manager.
Just navigate your web browser to host/port the Icecast server is listening on.
If you are a Windows user, make sure you started the Icecast server and then click on the shortcut in the Startmenu, it will open the Icecast status page in your browser.
Most mordern audio players should be able to play Icecast streams without problems, depending
on the format you are streaming in.
We maintain a list of Icecast-compatible audio players here.
<location>
to?The <location>
tag sets free form string that is listed publically as the server’s location.
(This is not the location of your station/studio.)
The value should include at least the nation, and city.
A good example would be “Datacentre 4, OurSuperCompany GmbH, Frankfurt am Main, Germany
”.
A bad example would be “Frankfurt
” (which one?) or “rack4.2
”.
<admin>
to?The <admin>
tag sets a free form string that is listed publically as the server’s contact.
This is normally an e-mail address, but could also be a phone number.
(If you use a phone number please use the international format starting with “+
”.)
<hostname>
to?This is the public hostname of your Icecast. Your server is reachable by this domain name. It is used in a few cases Icecast needs to know how it is reachable from the outside. One such case is for yp / directory submission.
You should set this to a DNS name that has at least a A
, or AAAA
resource record pointing to
this instance. Using of IP addresses, or (website) URIs is invalid.
<server-id>
, or <fileserve>
make my server more secure?No. Altering this settings does not improve security. However setting those values can easily break your server. It is best not to touch those options at all.
Icecast accepts all characters but U+0000. However it is best to avoid some characters as for example players might not support them. Therefore it is recommended to avoid those that require escaping as per RFC 3986. The characters permitted by that standard without escaping are: “a” to “z”, “A” to “Z”, “0” to “9”, “-“, “.”, “_”, and “~”. In addition it is totally safe to use the slash (“/”) as well.
For technical reasons it is also required that the mountpoint starts with a slash (“/”), and must not start with “/admin/”.
Yes. There are two namespaces reserved for this. The first is “cdn-
” for parameters purely in the domain of the CDN. This is useful for example for load balancers. The second namespace is “app-
” for everything else.
It is recommended to not use parameters outside those namespaces as they will likely collide with parameters Icecast uses internally.
Examples: