I've been hacking on an Icecast-compatible server with Erlang. You can feed it an FFmpeg icecast feed into the server, and listen to it with any Icecast-compatible player. I think it's kind of neat; I do some extra things that the official Icecast server doesn't give you.
I store the chunks in a custom-built database (on top of riak_core and Bitcask), and I have it automatically also make an HLS stream as well. This involved remuxing the AAC chunks into MPEG-TS and dynamically create the playlist.
It's also horizontally scalable, almost completely linearly. Everything is done with Erlang's internal messaging and riak_core, and I've done a few (I think) clever things to make sure everything stays fast no matter how many nodes you have and no matter how many concurrent streams are running.
replies(1):