[Icecast] Shoutcast compatibility suggestions
oddsock at oddsock.org
Wed Dec 29 14:49:54 UTC 2004
At 12:32 AM 12/29/2004, you wrote:
>Ok, I've not managed to find any documentation on the shoutcast
>compatibility introduced in icecast 2.2.0, so please humour me if I
>missunderstand how it's meant to work.
>This is my understanding of it currently:
>1. You configure Icecast (as shown in the shoutcast example) so that
>shoutcast connections get mapped to the mountpoint you define.
>2. You configure a listen socket specifically for use as a shoutcast
>source port. People connecting on this port wil have their stream appear
>on regular Icecast ports under the mountpoint defined for Shoutcast streams.
The shoutcast-compat options in icecast were introduced so that we could
properly handle the Shoutcast DSP style source client connection. Here are
the important bits we needed to implement :
* The shoutcast DSP connects on 2 different ports (lets call this "port"
and "port + 1"). The authentication handshaking (as well as the actual
stream data) comes over "port + 1", while "port" is used only for sending
in metadata updates.
* The shoutcast DSP sends in metadata update requests over "port", but does
not specify any kind of mountpoint (obviously since it knows nothing about
* The shoutcast DSP connection protocol is obscure enough that we were not
able to easily flag that type of connection protocol (this caused us to
require that all "port + 1" connections must be flagged as
"shoutcast-compat" to enable shoutcast DSP style connection behavior on
So to setup icecast in shoutcast-compat mode you pretty much just create
another listen port (one larger than your original port) and mark that
"port + 1" port as "shoutcast-compat". This is what the example config
does. Also, since the shoutcast DSP doesn't allow you to specify any kind
of mountpoint (or anything close to it), you are able to assign a "virtual
mountpoint" via the <shoutcast-mount> option. The default is to map all
shoutcast DSP sources to /stream. The main problem (and reason why you
cannot attach multiple Shoutcast DSPs reliably to a single icecast
instance) is the Shoutcast DSP's ignorance of mountpoints. Metadata
updates are sent in over the "port" port, and have no mountpoint
designation. So, while technically you could connect 2 (or more) Shoutcast
DSPs to icecast, you would have no way to map the metadata updates from
those 2 to the correct mountpoints. It may be possible to do this based
off the port the request came in on (that would then require you to setup a
set of 'port' and 'port + 1' pairs for each possible shoutcast DSP you
wanted to connect. This is not a very elegant solution however, and is
marginally better than starting up multiple icecast instances. although we
may consider implementing it if enough people ask for it.
The good news is, once you've connected a shoutcast DSP to icecast (and it
is mapped to a mountpoint), then you can use all the normal
"mountpoint-specific" settings that any normal mountpoint can. this
includes specifying a different source password, all the authentication
stuff, and things like fallbacks.
Hope this explains it a bit better, and if you have any questions, feel
free to followup...
More information about the Icecast