i c e c a s t   f a q
 ` ` ` ` ` ` ` ` ` `

Q1. What is icecast?
Q2. Where can I get icecast?
Q3. What are iceplay and icedir?
Q4. What platforms are supported?
Q5. What do I need to setup and run an icecast server?
Q6. What do I need to run a directory server?
Q7. How can I listen to icecast streams?
Q8. How can I broadcast icecast streams?
Q9. Does icecast work with WinAmp?
Q10. How compatible is icecast with Nullsoft's Shoutcast?
Q11. What are the future plans for icecast?
Q12. What is the playback quality like?
Q13. What's the story with crypted passwords?
Q14. What's libwrap (tcp_wrappers), and how do I use them?
Q15. What's the remote admin console for?
Q16. What's an Icecast Operator?
Q17. How do I make my server show up on both icecast.linuxpower.org
     and yp.shoutcast.com (or others)?
Q18. How do I change encoders without dropping clients?
Q19. How do I renice icecast and shout to improve performance?
Q20. What's the best mpeg player to use with icecast?
Q21. Why doesn't shout work with shoutcast servers anymore?

Q1: What is icecast?
A1: icecast is an internet audio broadcasting system based on Mpeg audio
    technology.  It allows almost anyone to broadcast an audio stream
    to as many people as their bandwidth can support.

Q2: Where can I get icecast?
A2: The icecast home is http://icecast.linuxpower.org/.  You can find icecast
    news, the latest source releases and patches, and links to some servers
    which are broadcasting publicly.

Q3: What are iceplay and icedir?
A3: Two extra components come with the icecast system.  iceplay is an MP3 file
    streamer.  It takes a playlist of MP3 files at a specified bandwidth and
    sends them to an icecast server.  You can use it to broadcast pre-encoded
    files, but it does not encode anything on its own.  icedir is an 
    implementation of a directory server that will list broadcasts and keeps
    track of basic information about public icecast servers (number of
    listeners, bitrate, url, etc.).

Q4: What platforms are supported?
A4: Currently icecast and its components have only been tested with the
    Linux 2.0.x and 2.2.x x86 platforms.  There are people testing it out
    on other platforms (AIX, SunOS) and we forsee no major problems with
    getting it to work on most any *nix.

Q5: What do I need to setup and run an icecast server?
A5: First of all you need a box to run the server.  Download and compile
    icecast on this box, and start it up (the default config should be fine).
    Next, you will need to send your server an audio stream from an encoder.
    You can run iceplay on the same box or another box to stream pre-encoded
    content to the icecast server.  You can also use Nullsoft's WinAmp under
    Windows platforms with their Shoutcast plugins.  Once the encoder connects
    your server will be listed at http://icecast.linuxpower.org if you have
    specified that it will be public.  Other directory servers may be used 
    as well.

Q6: What do I need to run a directory server?
A6: We designed icedir for Apache environments with MySQL for a database and
    PHP for the scripting.  These programs are freely availble and compile
    on almost anything.  Once you have those set up, there are directions
    on how to set everything up in the icedir README file.  The directory
    server could easily be rewritten in Perl using textfiles or DB files,
    and you are free to do this if you wish.

Q7: How can I listen to icecast streams?
A7: Currently *nix platforms are lagging a bit behind in the availability
    of Mpeg audio decoders that support HTTP streaming.  Under Linux,
    we have tested with mpg123 0.59o and 0.59pre-p.  While not perfect, 
    0.59pre-p is definately quite usable.  You can obtain mpg123 from
    http://www-ti.informatik.uni-tuebingen.de/~hippm/mpg123.html.  Under
    Windows platforms (and possible under WINE) you can use WinAmp.

Q8: How can I broadcast icecast streams?
A8: Use iceplay, see Q5.

Q9: Does icecast work with WinAmp?
A9: Yes.  One of the initial goals was to provide compatibility with both
    WinAmp as well as Shoutcast.  You can send audio streams to icecast
    servers with WinAmp as well as listen to icecast streams with WinAmp.
    We have not had any problems whatsoever using these two together.

Q10: How compatible is icecast with Nullsoft's Shoutcast?
Q10: As far as we know, it's completely compatible.  You can use icecast
     with Nullsoft's directory server (yp.shoutcast.com) and you can use
     iceplay to send streams to Shoutcast servers.  Of course, we recommend
     you use icecast.. :)

Q11: What are future plans for icecast?
Q11: We plan to implement server redirection and iron out all the bugs for
     a 1.0 release.  Server redirection will allow a server to rebroadcast
     another servers stream, without requiring an encoder at all.  We are 
     also talking with other developers of related projects and trying
     to pool resources with them.  We are investigating live audio 
     encoding (it is supported by icecast server, but there aren't any
     tools on the encoder side yet).  Future versions of the server may
     support multiple incoming audio streams.

Q12: What is the playback quality like?
A12: The playback quality on average is really, really good.  MP3 files are
     reknown for their excellent sound quality, so those of you with MP3
     experience already know what to expect.  In general it seems quality
     can vary by encoder, but overall an Mpeg stream is better than a 
     RealAudio stream at 50% more bandwidth.  That means that a 16kbps icecast
     stream can sound better than a 24kbps RealAudio stream.  And of course,
     bandwidth allowing, you can send near CD quality streams at 128kbps,
     which sound GREAT!

Q13: What's the story with crypted passwords?
A13: Normally, icecast and shoutcast servers keep the passwords uncrypted,
     either in a configfile, or specified on the command line. This is pretty
     poor security. Newer versions of icecast provide a configuration option
     (--with-crypt). With this option, then the passwords in the configuration
     file (icecast.conf) and the ones specified on the command line, should
     be crypted. To produce these crypted passwords, use the mkpasswd program
     distributed with icecast. Be careful in the configuration file not to
     leave any junk chars after the passwords.

Q14: What's libwrap (tcp_wrappers), and how do I use it?
A14: Sometimes you want to restrict access for clients, admins, and encoders,
     not only on a password basis, but on a hostname basis. You want to
     be able to specify which hosts should be allowed to listen to your
     server. Newer versions of icecast (when configured with the --with-libwrap
     option), make use of the tcp_wrappers package by Wietse Venema, which
     means that you can use the files /etc/hosts.deny and /etc/hosts.allow,
     to do host based access control. The tcp_wrappers package does not come
     with icecast, you need to download and compile it yourself. It does
     work with all sane versions of unix, and you can download it from
     most security related ftp sites (like ftp.cert.org).
     For instance, if you want to restrict icecast access on your server
     to the 130.236.235.* network, then add the line to /etc/hosts.deny
     icecast: ALL
     And this to /etc/hosts.allow
     icecast: 130.236.235.

Q15: What's the remote admin console for?
A15: The only way of controlling the server (when not using the remote admin
     console), is from the window where you started the icecast server process.
     This is really limited, so we suggest you make use of the remote admin
     console. You simply fire up a telnet client, and connect it to the
     remote admin port (8002 unless otherwize specified). Now type the 
     remote admin password, and you're in. There are some commands available
     right away, but most of the goodies require a second password; the
     operator password. Type 'oper <password>', and if you're in luck then
     the server replies with "You are now an Icecast operator". The current
     list of commands (you can get it by typing help) is available under
     Remote Admin Console in the README.

Q16: What's an Icecast Operator?
A16: Simply a remote admin that has used the oper command with the correct
     password. Similar to an IRC operator.

Q17: How do I make my server show up on both icecast.linuxpower.org
     and yp.shoutcast.com?
A17: Simple, either use the command line option -d <server> several times
     like so: icecast -d icecast.linuxpower.org -d yp.shoutcast.com
     Or in the icecast.conf file, use the directory keyword several times
     like so:
     directory icecast.linuxpower.org
     directory yp.shoutcast.com

Q18: How do I change encoders without dropping clients?
A18: This is possible, and simple, but most mp3 players will die when you
     do this, because the stream will get out of sync.
     Connect the second source to the server, and when you want to switch
     encoder, use the 'select <id>' command in the remote admin console.
     To know what id to use, you can first use the 'sources' command, which
     displays the id for each encoder in the first column.

Q19: How do I renice icecast and shout to improve performance?
A19: You don't need to renice icecast except when you are serving a large
     number of clients (and even then it's not really necessary unless you
     notice performance problems).  In any case, you can run renice (niceness)
     -p (pid), where niceness is something negative, like -5 or -10, and (pid)
     is the pid of the icecast process.  You have to be root to renice to a
     negative niceness.

Q20: What's the best mpeg player to use with icecast?
A20: At the moment, not all players can handle http streaming. The ones I've
     tested are x11amp and mpg123 (0.59q). x11amp is far better, almost as
     stable as winamp. Under windows your best bet is winamp.

Q21: Why doesn't shout work with shoutcast servers anymore?
A21: Shout (as shipped with 1.3 and above) defaults to using the new
     x-audiocast headers. Shoutcast (and icecast pre 1.3) servers wants the
     old icy headers. Add the -i flag to shout to make it print icy headers,
     and all will be well.
