Mp3Serv

Mp3serv Is No Longer Supported!

Yes it's true... despite being here a year before Shoutcast I only ever had a couple of users (but about 50,000 downloads). Now I'm working with the developers of IceCast to create the definitife broadcast solution. Most of My time has been spent Bringing LiveIce to the distribution, and I'm happy to say that right now it does stuff that shoutcast can't. So get over to the Icecast Page and support Free radio!

 You can download the most up to date version of LiveIce from here, sometimes the IceCast Distribution lags behind slightly because I discover so many bugs ;-).

LiveIce is a combination of mp3serv and mp3mixer - you can mix mp3's and live audio and send the output to an encoder before forwarding it on to the  icecast (or shoutcast - but why would you want to use it?) server. Currently only 2 mp3 streams can be mixed at once - this limit is currenlty placed by the fact that I'm running out of keys  to control this... A nice GTK based GUI may appear sometime.. but I'm workin hard on the curses based interface.  Because of all the patent problems the encoder is a seperate binary which you acquire for yourself, because it's a seperate programme it has to be able to accept streamed input from pipes without expecting to do seeks on the data several mp3 encoders Don't do this correctly.... so if your favourite encoder isn't supported then tell the authors to fix their software.

Encoders That Work

The Black List - Encoders which (Still) don't work


And Just for you nostalga freaks out there .. here;s the original mp3serv page.... partly to remind the world that mp3serv was broadcasting a year before all the shoutcast lamers.
 

The Free mpeg radio system

Yep you too can run a radio station across the internet in high quality mpeg audio using this simple piece of software.

Well you can ssuming you can get it to work - it is after all no more than a hack, it lets you take input from your soundcard, pipe it through an mpeg audio encoder and then stream it out across a tcp connection to your audience.
 

The basis from the start was to use standard components and just build a wrapper around these to get them to work together. The data is taken from the sound card (or another source if you really want) and fed into a named pipe where it is read by an mpeg encoder which writes the data to recording file. The process also spawns a server on a high port which accepts connections and after transmitting suitable http headers and mpeg header data jumps to the end of the live file (which is growing continuously) and brings the listener up to date. Any which can stream data from URL's - typicall the url will be something designating a high port number - e.g. http://radiostation.net:3223 . Mpg123 works (except there's a little bug in beta version 0.59o) and WinAmp handles it too. Don't point a web browser at that URL or it will never stop downloading until you stop the programme..... in theory you can even use netcat to grab the data and pass it to stdin on a player e.g.
            nc radiostation.net 3223 > musicout -
Of course that assumes that the player can negotiate its way past the http headers. One other thing to make sure of is that your connection is fast enough to support the bitstream. For most people 16Kbit is OK, but 24 can start causing problems with some modem connection, of course if you really want to listen in you could record it for playing later.... Well I'm sure you all know about the patent problems surrounding the mpeg audio technology, I want to stay as far away from this as possible. I have a hacekd up version of the dist10 LSF  code which is tuned for myself but I cannot release this without having to get a 15$ royalty on every copy. Anyway - the official codecs from Fraunhoffer are soooo much better that you should really think about using them - it's only poor students like myself that need to hack things together for free. More on this later...... Well it comes down to the speed of your connection, there is currently no multicast support built in because I wanted to use existing mpeg players, so every connection uses more of your bandwidth. I'm on a 256Kbit connection so in theory I could support 16 connections.... except I couldn't because the IP packets need header and control information attached whcih all take bandwidt too. However the programme has one other feature to allow extensive broadcasting - the package can be run in reflector mode: it can connect to an existing broadcaster and retransmit it to other sites. Of course adding reflectors increases the lag a little.... Well because the  audio data goes through several buffers there is a fair amount of lag, and mpeg's ability to save up data in the stream for later use only contributes further. 4 Seconds is the shortest lag I have ever measured - using a reciever in the same office as me and running across an ethernet. Presumably a reflector would add a similar lag at each stage. I just source everythign through the soundcard - I have a soundcard with connections to a microphone, line-in and the internal computer CD player. I also have one of those silly headset with a microphone builtin so I can talk into a microphone hands free. I plug a cd/radio/cassette player into the line in and that gives me enough to mix semlessly between music from 2 sources. I use xplaycd and xmixer, xmixer is essential for swapping between sources. Mp3serv has a small volume meter on the terminal which  is the only feedback I get, I don;'t have the OSS sound drivers so I don't have any realtime audio feedback on my broadcasts - I just guess wha the sound mix sound like by learnign to read the meter. According to some web pages I've read, mpeg audio produces the same sound quality as a Real Audio bit stream which is 50% larger - i.e. a 16Kbit mpeg stream sounds as good as a 24Kbit real audio stream. Why not listen to some examples...... I wrote all the code on an intel Linux machine so that platform works for certain.... as for other flavours, your mileage may vary. I have absolutely no intention of ever considering windows support, and I don't want anyone providing it - the reason for this? Well I was getting quite far into developing this in may when I needed to reboot into windows to use a package at which point windows 95 crashed and destroyed my partition table - for this reason I don';t want to have any more to do with that excuse for an OS - I lost 3 weeks of work on this and my encoder becuase of it. Which reminds me - all my code is protected unider the Gnu Public License II. To all intents and purposes this means it's free, but I can kick your arse legally if you do something  which attempts to exploit my hard work.

You need an encoder also.....
 

Oh... and one other thing you'll need to make sure you have is a fast computer - my 266MHz PII is hard pushed to encode at faster than 32Kbit/sec in real time.

That's All for now Folks.... all you need to do is Download the sources and try them out.

While you're around this neck of the woods you could take a look at my mp3mixer DJ'a'like mpeg audio mixing console.

And I've mellowed a bit regarding support - you might want to try e-mailing me at spm@star.arm.ac.uk or even try talking to szyzyg on efnet IRC.