Before you can compile ices you need the libshout library. First download it:
# cd /usr/src/icecast
# wget http://downloads.us.xiph.org/releases/libshout/libshout-2.3.1.tar.gz
Then extract the tar file and change into the new directory:
# tar xf libshout-2.3.1.tar.gz
# cd libshout-2.3.1
Run the configure script:
# ./configure –prefix=/opt/icecast/latest
And compile the sources and install the library:
# make
# make install
Now download the ices client:
# cd /usr/src/icecast
# wget http://downloads.us.xiph.org/releases/ices/ices-2.0.2.tar.bz2
Extract the tar file and change into the new directory:
# tar xf ices-2.0.2.tar.bz2
# cd ices-2.0.2/
Before you run the configure script, export the PKG_CONFIG_PATH variable so ices will be able to include the libshout library:
# export PKG_CONFIG_PATH=/opt/icecast/latest/lib/pkgconfig:$PKG_CONFIG_PATH
# ./configure –prefix=/opt/icecast/latest
Now compile the sources and install the binaries:
# make
# make install
Check that the ices client is available:
# ls /opt/icecast/latest/bin/
icecast* ices*
Finally configure the ices client and create your first OGG/Vorbis radio station:
# cd /opt/icecast/latest/etc/
# vi ices1.xml
Add following code in file.
<ices> <!-- GENERIC --> <background>1</background> <pidfile>/var/run/icecast/ices1.pid</pidfile> <!-- LOGGING --> <logpath>/var/log/icecast</logpath> <logfile>ices1.log</logfile> <logsize>2048</logsize> <loglevel>3</loglevel> <consolelog>0</consolelog> <!-- STREAM --> <stream> <metadata> <name>RadioStation 1: OGG</name> <genre>Varios</genre> <description>Test Radio 1</description> <url>http://MyHost/IP:8000/</url> </metadata> <input> <param name="type">basic</param> <param name="file">/opt/icecast/latest/etc/playlist1.txt</param> <param name="random">1</param> <param name="once">0</param> <param name="restart-after-reread">1</param> </input> <instance> <hostname>MyHost/IP</hostname> <port>8000</port> <password>password</password> <mount>/radiostation1</mount> </instance> </stream> </ices>
The ices configuration file is as easy as the icecast configuration file. The section GENERIC defines to run ices in background and where the pid file can be found.
The section LOGGING is all about logging, where and what to log. The STREAM section needs a little more attention. It defines the radio station itself like the name of the station, where the icecast server can be reached etc.
The password is the source password from the icecast configuration file. If you don’t set a password here everybody can connect to your icecast server and create a station.
One more thing: the playlist. The playlist is a plain text file and contains all your songs you want to play.
Every OGG/Vorbis file inside this file must have the full path, eg:
# cd /opt/icecast/latest/etc/
# vi playlist1.txt
/music/artist/album/song1.ogg /music/artist/album/song2.ogg
You can create this list easily with find:
# find /music/artist/album/ -name “*.ogg” > /opt/icecast/latest/etc/playlist1.txt
With the ices configuration file and the playlist created, start up ices as user icecast:
# su – icecast -c “/opt/icecast/latest/bin/ices /opt/icecast/latest/etc/ices1.xml”
Now take a look into the log file:
# cat /var/log/icecast/ices1.log
[2011-12-16 12:17:05] INFO signals/signal_usr1_handler Metadata update requested
[2011-12-16 12:17:05] INFO playlist-basic/playlist_basic_get_next_filename Loading playlist from file “/opt/icecast/latest/etc/playlist1.txt”
[2011-12-16 12:17:05] INFO playlist-builtin/playlist_read Currently playing “/music/artist/album/song2.ogg”
[2011-12-16 12:17:05] INFO stream/ices_instance_stream Connected to server: MyHost/IP:8000/radiostation1
…
As you can see the first radio station is ready and available under http://MyHost/IP:8000/radiostation1
Now try to connect to your streaming server with an audio client and enjoy listening to your radio.
For each radio station you want to provide you need to create a single ices configuration file with it’s own playlist etc. Eg. you can create a seperate radio station for your Rock music and a seperate radio station for your Pop music.