Broadcast audio with Icecast2
2. Edit Icecast2 configuration
Open the file
/etc/icecast2/icecast.xml as root in an editor. For security reasons you should setup passwords in the
If you changed the
<relay-password> you need to do so on the source or relay side as well. That means leave it default or change it in the ices2.xml file (see below) as well. The same will need to be done in the Ices or Darkice configuration files.
You also need to define the hostname where your stream can be reached:
Leave it as localhost (no need to give a resolved IP there) when you only want to stream in your local network. The default port to listen to is 8000. Change it only when needed.
3. Edit defaults
/etc/default/icecast2 file as root in an editor. The last line needs to be changed to
That's all for Icecast2. Of course there are many more settings you can play with. In the configurations files there are explanatory notes on parameters.
4. Start/Stop Icecast
The server is started and stopped by the following commands:
While running the Icecast server can be administrated from any browser at
http://localhost:8000/admin/ after entering your administrator credentials defined in step 1. Further documentation is available from Icecast.org.
Stream2ip is a graphical frontend to quickly start and stop streams where a basic setup for Ices2, Ices or Darkice has already been done.
Ices2 for streaming OGG Vorbis audio from a local soundcard
To set up of pulseaudio to enable recording from the soundcard see note for Darkice below.
Make directories for Ices2
mkdir /var/log/ices # in case you need logfiles.
mkdir /etc/ices2 # for putting ices stuff in.
Edit the Ices2 configuration .xml
Ices2 will run using an .xml file for settings. Verbous examples of configurations can be found in
/usr/share/doc/ices2/examples/. These files need to be edited to meet your needs and can be copied anywhere, best in your home directory. Depending on the configuration file Ices2 uses a playlist in Ogg Vorbis format (
ices-playlist.xml) or the output from your soundcard (
ices-alsa.xml) as streaming source for Icecast2.
In the section
<input> you may need to replace the device if you have setup your sound system to PulseAudio. To do this edit the corresponding line to:
The name of the stream for the receiving client is defined in the following section.
Streams from your soundcard will be started by first running the Icecast2 server, and then running Ices2 using the following commands:
ices2 /home/user/somewhere/ices-pulse.xml # or any other name from .xml file
On the receiver side your radio "station" tunes on:
<serverIP> is the IP of your streaming server followed by the port you defined in the icecast.xml file (default 8000).
Streams are terminated by killing Ices2 and/or stop running the Icecast2 server:
Ices for broadcasting mp3 playlists
Broadcasting a playlist containing mp3 files can not be done with Ices2. We need to install IceS, which is also available from the Medibuntu repository.
After having set up the configuration file with server address, password and streaming properties (well documented example will be found in
/usr/share/doc/ices/examples) we can stream mp3 audio files from playlists (e.g. in .m3u format) over an Icecast2 server by:
ices -c <path_to_config_file> -F <path_to_playlist>
For further options read the documentation in the quite elaborate man page from
Darkice for live streaming
We can stream the output of the local sound card as OGG Vorbis or as mp3 stream using Darkice. To enable streaming of the local soundcard we may need to define the recording device for Darkice in pulseaudio first. This can be done with pavucontrol . In the Recording tab choose
Monitor of <your soundcard> for the "ALSA plug-in [darkice]".
The configuration file (well documented example given in
/usr/share/doc/darkice/examples) needs to be adapted to the Icecast server and the local sound environment:
duration = 0 # duration in s, 0 forever
bufferSecs = 1 # buffer, in seconds
reconnect = yes # reconnect if disconnected
device = default # or `pulse' for Pulseaudio
sampleRate = 44100 # sample rate 11025, 22050 or 44100
bitsPerSample = 16 # bits
channel = 2 # 2 = stereo
bitrateMode = vbr # variable bit rate (`cbr' constant, `abr' average)
quality = 1.0 # 1.0 is best quality
format = mp3 # format. Choose `vorbis' for OGG Vorbis
bitrate = 256 # bitrate
server = localhost # or IP
port = 8000 # port for IceCast2 access
password = hackme # source password to the IceCast2 server
mountPoint = mystream.mp3 # mount point on the IceCast2 server .mp3 or .ogg
name = mystream
After saving this configuration (e.g. in
~/music/darkice.cfg) we first run the Icecast server and are then able to stream pulseaudio output from the local sound card by invoking:
darkice -c ~/music/darkice.cfg
On the receiver we tune to
http://<localhost>:8000/mystream.mp3 for listening.
<localhost> is the IP of the Icecast server.