LiveIce: 

Live Source Client For IceCast

LiveIce is the source client for Icecast which encodes an mpeg stream for broadcast as it is created. Unlike clients such as Shout and IceDJ this permits the broadcast of live audio, rather than prerecorded mp3's.

What Is LiveIce?

LiveIce was developed after the appearance of IceCast to provide the Real Time streaming functionality which makes it a viable solution for broadcasting. It is based on the guts of 2 of my previous works - Mp3Serv, the first mp3 broadcasting system & Mp3Mixer, a toy which allows the user to 'Mix' with mp3 streams. For legal reasons the actual mp3 encoder cannot be included in the programme, instead the software uses an external encoder which is executed and fed data by LiveIce. Several encoders are now supported, including Commercial packages such as Fraunhofer's l3enc and mp3enc, Xing Technologies beta  test of xingmp3enc for Linux, as well as the many adapations of the ISO sources such as LAME 3.0 and Screamer.

The mixer mode also makes great use of mpg123 to decode the mp3 streams into raw pcm data which is then mixed by the programme, this is one piece of fuctionality which I'd like to bring into the LiveIce code, but for the moment you still need the mpg123 binary on your system.

What Is LiveIce XMMS?

LiveIce XMMS is an effects plugin for xmms which sends streams to IceCast and provides a limited set of functions similar to those provided by liveice but without half the hassle. LiveIce XMMS lacks many of the features of the full version of LiveIce but provides the main functions needed to stream from xmms. Much of this simplicity comes from the GUI which was designed by Peter from the XMMS team, also note - that this is a relatively recent development and so none of the documentation on this page refers to installing or setting up the plugin..... (Also - I should thank DrFatal from xmms for the Logo)

Where Can I Get It?

Getting LiveIce -  you can get the source code either with the distributions of Icecast, it will be found in a subdirectory and needs to be compiled and installed seperately. Alternatively the newest versions of LiveIce will be available via anonymous CVS on the Icecast server. And finally for all those traditionalists out there I should always have a fairly recent version available for download as a .tar.gz archive.

LiveIce XMMS sourcecode is available here.

Ryan Weaver has been kind enough to make RPM's


 

How do I install it?

I've put together a nice little guide to installing a working system and on choosing an encoder which is suitable for you, there are a lot of rough edges right now, and I'm sure there are plenty of bugs for people to point out or for that matter features to request. After all, this is what open source is all about.

What Features Does It Already Have?

  • Encodes mp3 audio from raw audio data as it is created and stream it to an IceCast/Shoutcast server
  • Supports icy or x-audiocast headers for connection.
  • Should run on any Unix system - OSS support required if you want to use the soundcard.
  • Curses based user interface to make those terminal sessions look more interesting.
  • Supports simple terminals if you haven't got Curses.
  • Compatible with many popular mpeg encoders
  • Configuration options  may be set in multiple configurations files and on the command line
  • Mixer mode allows the user to play existing Audio files as part of a live broadcast
  • Mixer mode allows the user to mix multiple channels of audio to keep a seamless broadcast running
  • Input files can have their speed and volume independently controlled on a per-channel basis 
  • Mixer commands can be recorded to file and replayed at a later date
  • Playlists can be played in sequential order or randomly
  • Any files played can be logged to a file, for use by external programs
  • Output can be streamed at multiple bitrates to multiple servers
  • Title streaming to icecast servers based on the loudest channel

 

What About New Features?

I get asked for lots of new features.... and some will get implemented, while others won't, I'm only one person and only have so much time, and moreover only so much talent. Here's the list of things which may or may not happen....

Real Soon Now - Features I'm Implementing

  • Graphical Interface - I've got a TK gui for creating configuration files and a similar one for generating mixer keystrokes, it's just a case of putting the hooks into the control and display code.
  • Better playlists - It's just a slow evolution at the moment.
  • Getting rid of sox - if I can parse enough of the right sort of headers....
  • Mixer support for icecast streams - just a bit of work with non-blocking pipes
  • Fast-Forward and Rewind - limited support already - hacked mpg123 needed

Maybe If I've got time features....

  • Effects - I've got a few effects algorithms which are easy to implement, I just need a good interface to let the user control them.
  • Burst suppression - smooth out the data rate from the Xing encoder.
  • Proper X - interface, rather than just a frontend
  • ALSA support - as soon as ALSA supports my Vibra SB16 soundcard
  • Executables in playlists - spawn off other programmes to generate audio.

Features which I probably won't implement

  • Support for Lose95/98/NT - I don't have a development platform for these. and I'm sure there are better people out there. (oh and there's the small matter of Windows Sucking)
  • Playlist interfacing with external programmes for automaitc radio station mangement.... ewwwwwwwwww I'm a live DJ kind of man - I find the concept of automatic radio stations to be repulsive.

 

How do I Use it?

OK.. I know it's not exactly user friendly, but I think it's more important to make it usable. Anyway, I'm putting together a users guide on the web to help everyone get into it.

 

Is there any other garbage on this Web Page?

Well.... if you're broadcasting then you might like to downoad my IceCast Station ID's (AKA Jingles) "Open Mind" and "Cool Tunes" - tell the world about free software and how you're different from those ShoutCast servers.

Scott Manley / spm@star.arm.ac.uk