Geoff Shang
2007-Dec-19 15:44 UTC
[Icecast] Open source streaming project in need of developers
Hi everyone, I thought long and hard (ok, not *that* long) about whether or not to crosspost this to icecast-dev. In the end I decided not to since this isn't about an Icecast or Xiph project. My name is Geoff Shang and I've been an enthusiastic user of Icecast for a long time. I am also the chief tech guy for a project called ACB Radio (http://www.acbradio.org), which is run by the American Council of the Blind (http://www.acb.org). several years ago, one of our volunteers came to us with a partially developed automation system for online streaming. We needed one at the time, and so he and another of our existing volunteers got it to the stage where it would do most of what we wanted, at least to a reasonable extent. As time went on, however, the code suffered some bit rot. The original developer lost interest in maintaining it , and both he and the other volunteer moved onto other projects. The code, which never had a formal release, also found its way into a few other setups with the result that it fragmented somewhat. Last year ACB purchased a new server so that we could more evenly distribute the tasks that our original server was having to do. One of the things we wanted to move was the radio stations. But this new server was running newer software and a lot of things had broken. The volunteer who had helped out a bit with this code was talked into coming back and pulling all of the various forks back together so that it would compile and mostly run. I beat on the web interface so that it would work under PHP5 (and fixed several existing bugs in the process). so now it compiles and runs, to an extent. But there are several glaring bugs which prevent us from deploying it on our new server, and from roling out a "here's what we've got so far, have a play with it" release to the community. Neither of the C programmers who originally worked on it are taking active interest in it anymore, though one may answer questions we are unable to figure out on our own. so basically I'm looking for developers. So what is it? PRS or Personal Radio Station is a playout system written in C, with data stored in a mysql database. Another C program is used to add audio files into categories in the database, and a set of PHP scripts are used to program the scheduler. The playout system can play Wav, Ogg Vorbis and MP3 files, performing crossfading and, if desired, simple and/or dynamic compression. It can take additional input from a soundcard or a live stream and can also output to combinations of both (the latter via libshout). It can use Curl to send metadata updates to streaming servers. The scheduler can handle basic random events, as well as no-repeat rules based on specific recording or on artist. You can also program the system to play a specific file, and it can relay audio from another streaming server while also archiving it locally for later broadcast. Individual playout events can be grouped together into a schedule template, which can be scheduled as a one-off or repeated hourly, daily or weekly. -- There is currently next to no documentation for the software. One of my first tasks as the new project admin will be to write up basic "getting started" documents for anyone interested in trying it out. The goals for the project, as I see them are: 1. Fix critical bugs. This is very urgent and all offers of help will be accepted. 2. Code cleanup. I understand that the code could be a lot more robust and tollerant of errors than it currently is. 3. Addressing of long-standing, less critical bugs. 4. Internalising of some processes which are currently performed by launching external command-line programs. 5. Adding lots of cool features and taking over the world ... or somehting. The project is hosted on sourceforge at http://sourceforge.net/projects/prsradio (prs was already taken). I've just set up a development mailing list (http://lists.sourceforge.net/mailman/listinfo/prsradio-devel) and I'll configure it after I've finished writing this message. You can also get the code from https://prsradio.svn.sourceforge.net/svnroot/prsradio/trunk or view it at http://prsradio.svn.sourceforge.net/viewvc/prsradio/trunk/ The license will be something approximate to a MIT license, but I need to clarify this with the previous developers. Of course, you can drop me a note if you have any questions, comments, whatever. I hope to see Email from some of you very soon. Cheers, Geoff.
David Baelde
2007-Dec-20 07:50 UTC
[Icecast] Open source streaming project in need of developers
Hi, You didn't describe much of your bugs or the specific features of your playout system... It seems to me that it'd be best to focus new efforts on the automated scheduler pickings songs from the database. In that area there is no really good open-source solution as far as I know. There are only several specialized solutions. Playout is quite independent from scheduling: streamers can interface easily with any scheduling program. In particular our baby (liquidsoap) does crossfading, dynamic compression and (much) more. It also takes input from the soundcard (via ALSA, Jack or PortAudio) and relays HTTP streams either passively (pulling them) or actively (acting as icecast from the source's point of view). Soundcard input is getting better but is still liquidsoap's weakness: depending on your hardware, it might not behave perfectly especially in really low-latency mode.. Except for that, it's a robust tool, and I promise you that it won't die tomorrow and will support smoothly many more extensions. I don't mean to advertise too much our tool. It's just a hobby for all of us, we don't get money for it and you won't get paid support for it. I just believe that it could be a loss to spend energies in developing other complex streamers without a good reason and a serious reviewing of existing tools, not only liquidsoap -- I know that some people have some dirty-patched versions of ices that do crossfading, for example. I don't offer any help as I'm more than busy with my own project and life, but I'd be happy to follow any discussion on the design of an usable and flexible radio scheduling software. Good luck! -- David
Geoff Shang
2007-Dec-20 12:51 UTC
[Icecast] Open source streaming project in need of developers
David Baelde wrote:> You didn't describe much of your bugs or the specific features of your > playout system...hmmm, I thought I did describe the playout system, but I'm happy to elaborate if you want more details. But you're right about the bugs. The critical (i.e. urgent) ones in no particular order: 1. PRS will disconnect from Icecast after a certain amount of time (this varies). When it does, it will then repeatedly connect and disconnect until it eventually dies. I'm thinking something else is going wrong and it's spiralling out of control. 2. URL events (i.e. relaying from a live stream) don't work. This has always been rather tenuous, but now it's fully broken. 3. I've not looked hard at it, but on the face of it at least, Shoutcast streaming seems to be broken. 4. Due to the above Shoutcast problem and the fact that I want to run it in Icecast mode anyway, I wrote a patch (my only ever substantial C work) to implement title streaming for Icecast 2 servers. You can see it at http://sourceforge.net/tracker/index.php?func=detail&aid=1837908&group_id=206263&atid=996961 It worked fine with stock Icecast 2.3.1 but when I upgraded to recent Icecast (revision 1441 I think), PRS would stop playing audio shortly into a track and stay silent until the next one. I've not had my patch reviewed by a competent programmer, but I rather suspect my patch or something else in PRS rather than Icecast. These are the critical bugs that I know of. Fixing these may reveal others not currently testable.> It seems to me that it'd be best to focus new > efforts on the automated scheduler pickings songs from the database. > In that area there is no really good open-source solution as far as I > know. There are only several specialized solutions.This project is not new - we've been using it for 5 years. It's simply in need of new maintainers.> Playout is quite independent from scheduling: streamers can interface > easily with any scheduling program.There may well be some sense in the future in separating the playout from the scheduling in PRS, but right now they're intertwined.> In particular our baby (liquidsoap) does crossfading, dynamic compression > and (much) more.I took a brief look at it when considering whether to move to something else rather than stick with what we have. But it appeared to me that you need to learn some kind of programming language type thing in order to tell it what to do. The ACB Radio project requires software that can be operated for the most part by reasonably non-technical types who are more worried about which program should air in the next hour than finding the right process ID to send a HUP to. Most have never programmed anything or ever used a CLI.> I don't mean to advertise too much our tool. It's just a hobby for all > of us, we don't get money for it and you won't get paid support for > it. I just believe that it could be a loss to spend energies in > developing other complex streamers without a good reason and a serious > reviewing of existing tools, not only liquidsoap -- I know that some > people have some dirty-patched versions of ices that do crossfading, > for example.And I don't mean to put your project down, it sounds well worth looking at. but it doesn't seem to fit our requirements, and since our code already does (when it's working properly) most of what we need it to do, it would make sense to me to stick with it.> I don't offer any help as I'm more than busy with my own project and > life, but I'd be happy to follow any discussion on the design of an > usable and flexible radio scheduling software.Well I'm happy to explain how PRS does its scheduling (as much as I understand it) and you're of course able to pinch code from the project (in accordance with the license). BTW: If anyone wants to hear PRS in action (the old codebase on the old server), check out either http://acbradio.org:8000/mainstream or http://acbradio.org:8000/cafe (/cafe-low for modem users).> Good luck!And you. I'll take a closer look at your project some time when I can put a few hours into it. Cheers, Geoff.