A while back I wrote up a description of the streaming setup that I was building for Angry Beanie Radio. It was designed so that I could play both pre-recorded and live content, including live interviews conducted via Skype. However it lacked a bit when it came to the ability to run a "real radio station". By real of course I mean the ability to have a continuous stream running, edit playlists on the run and mix live shows with pre-recorded content (switching between two different streams).
Well I've built a platform that allows me to do just that.
Icecast: Icecast is probably one of the oldest and most used FOSS streaming packages. Able to stream in both mp3 and ogg, It's easy to setup and uses a simple XML file configuration. Takes audio from any source that can talk the shoutcast protocol. This is sitting on my Linode at audio.angrybeanie.com
AirTime: is a GPL 3 licensed radio automation package that allows you to do most of the things that any traditional radio station can. AirTime allows me to do a number of things:
- Create and maintain playlists
- Stream those playlists to the Icecast server
- Schedule broadcast blocks, which can be used with either playlists or "Live" content from other clients
- Create and manage users. This turns Angry Beanie Radio from a one man hobby into something more. Now I can give people access to create playlists and build their own shows.
As you can see, it's a pretty comprehensive setup, and if you're running on a reasonably modern Ubuntu then setup is actually pretty easy. However if you want to put it on another non-debian based distro, then I wouldn't. I tried getting it setup on the Linode (which is running CentOS) but it was simply easier to install it on an Ubuntu VM I have on my home machine.
IDJC: I spoke about IDJC in the last post, this is what gives me the ability to take the audio from the Angry Beanie Studio and send it to the icecast server.
It's not seemless, the way that live and pre-recorded content is mixed actually relies on the Icecast stream fall back mechanism. The idea is that you setup three streams.
- Stream number one is your AirTime stream, this is the stream that will contain your pre-recorded content from the AirTime box.
- Stream number two is your "Live" stream.
- Stream number three is your proxy.
What happens is this. A listener loads up the proxy stream into their music player. Icecast then says "Okay, there's no content there, lets fall back to the Live stream." If there isn't a live stream happening, then it falls back again so that the pre-recorded content is presented.
So there you have it, Angry Beanie Radio is now a step closer. Now all I need is content, a business plan, a marketing plan and a wealthy if eccentric backer ;)