[Icecast-dev] is this an appropiate use of icecast/libboost?
robbyd at u20.org
Sat Dec 25 18:08:06 PST 2004
I'm writing an application that will sniff audio streams going across
the network and allow a seperate client application to listen into one
of these streams. I was looking into ways to distribute the captured
stream media to a client for listening, and icecast came to mind.
Icecast, as I understand it, is usually used for streaming a few data
sources to MANY clients. As I want to use it, I would be streaming MANY
data sources with one client per source (1:1 correspondence).
Furthermore, for this to be possible with icecast, I would need to be
able to dynamically set up and take down 'streams', and direct clients
to these streams. I would also need to be able to push the captured
voice data to these streams for distribution (it seems libshout does this).
Streams would be set up on an individual basis as stated above, i.e. 1
client per stream, and taken down when that client is done with
listening to that stream or is inactive too long. After looking at how
icecast works a bit, it seems that I would do this by configuring it
with X mount points for X client listeners maximum. In my program, I
would keep track of which mount points are currently being "used" (i.e.
data is being sent to them via libshout send()) and which ones are not.
When a client requests to listen to a new sniffed stream, I would pick
one of the mount points not being used, and log into it with libshout. I
would give the client the URL of this mountpoint on the shoutcast
server, and then start streaming data to it as the client connects
(maybe there are better ways to time this part so the client gets the
entire stream from the start, but that's all in the details for now).
When the stream is done or the client stops listening to it and tells
the server, or the client times out,etc. I would simply stop any
streaming I am doing to that mount point, and add it back to the unused
list of mountpoints.
My question is: is icecast appropriate for this kind of usage? If not,
might there be some other open source media server that is more fit for
this? Is there a limit on the maximum number of mountpoints an icecast
process may have? (I see threads back in 2001 pegging a limit at 25-50
mountpoints, but I hear icecast has been rewritten since then.)
I figure you guys have put so much work into making a good streaming
media server and overcoming all the technical hurdles with this that I
would be dumb to not go with a solution like this if it was at all
Thanks for any input,
More information about the Icecast-dev