Fw: [Icecast] Conceptual problem?

Geoff Shang geoff at QuiteLikely.com
Sat Jun 16 20:48:12 UTC 2007


Stupid thing should have gone to the list. Argh.


----- Original Message -----

Excuse the non-delimited quotes, am using Windows temporarily.

----- Original Message ----- 
From: "Tod Thomas" <tod at creekroadconsulting.com>
To: "Geoff Shang" <geoff at QuiteLikely.com>
Cc: <icecast at xiph.org>
Sent: Saturday, June 16, 2007 9:13 PM
Subject: Re: [Icecast] Conceptual problem?

Geoff Shang wrote:
> Hi,
> I'd think it'd be easy enough to get Ezstream to do what you want,
> possibly
> using sox to do the appropriate decoding.  Then you could encode as ogg or
> mp3 as required.

I might end up going in that direction.

It would seem to me to be the simplest way to go, unless you indeed want to
write a source client.

> Not sure what you mean by "output to the mount defined in icecast.xml".
> Mounts in Icecast don't refer to a physical file system, they only have
> any
> meaning within Icecast and are created when a client connects to a
> particular mount.

I guess I was looking at the mount point as a shared pipe that I could
stream to and a client could acquire the stream from with icecast
managing everything.

this is correct.

So from the Icecast perspective the mount point is a place the listening
client connects to only?


> Outputting to Icecast is a little tricky, hence libshout.  The stream
> needs
> to be sent at the correct data rate for the content you're sending.  You
> also need to authenticate to Icecast by using some kind of HTTP protocol.
> I've never written a client so am not up on this.  I have a vague
> recolection of someone writing a client-type setup using shell scripts and
> the like and posting info to this list, but I don't currently have access
> to
> my stored Email.

So I can redirect to icecast like:

cat ./my.wav|oggenc - |/usr/bin/icecast

but I'm at the mercy of the file system to determine the rate that
icecast gets the data stream - correct?

No no no.  Icecast is a server daemon only.  You start it and it runs
quietly in the background, waiting for sources and clients to connect. If a
client connects to a mount point that a source is connected to, Icecast
relays the data sent from the source to the client, starting at the point at
which the client connected (minus any buffers that might be active).

To send a stream to Icecast, you need a source client.  Ices (both versions)
is a source client; Ezstream is a source client; The Oddcast DSP plugin for
Winamp is a source client.  And there are several others listed at

One other tool I was looking at was ffmpeg.  Not only can it re-encode
the stream on the fly, but it can send it at the correct data rate for
the encoded stream.  Only problem is there isn't much written concerning
re-encoding .wav files.

Is there any documentation anywhere that I could read to learn how to
write my own source client?  Something like that might explain a lot.

You might want to look at libshout.  It's the recommended way to write
source clients for Icecast.  It handles a lot of the trickiness for you.
It's also available at Icecast.org.


More information about the Icecast mailing list