I've made sveeral posts about the broadcasting class I'm in at school already, but here we go again. If anyone wants to know the details of the studio I can post that separately, but for the sake of time lets just say we can output in the following formats:
UDP streaming, RTSP, HTTP, and recording to a PC's hard disk.
What I want to do is encode the stream we have set up, which uses UDP and multicast, to OGG/Theora and use it in an HTML5 video tag. I want to build a custom web "app" so the teachers can go to one place and view archived broadcasts, see what's live if anything, and automatically be pointed to the most efficient delivery method their device can handle.
The catch is I want to do this without spending any money. The school has around 3 old Vista-era dual cores we can do whatever the crap we want with, and 6-7 single cores from the XP era, all of which can take up to 4GB of RAM and currently have 10/100 NICs, however we may upgrade them with some cheap 1Gbps NICs.
I want to stream in 720p 30fps and it seems the nitrate for that will be around 5-6mbps. With 30-50 clients at a time, there's no way that will work using only one of those dual core machines. Not only would the machine be overloaded, I'm pretty sure the IT department would want to murder me for having so much bandwidth burned up to hop across all the switches and routers to get to the 8 port switch in our studio. So here's what I'm wondering:
Is there a way we could put those machines strategically throughout the school in communications closets, with a 1gbps link to the rest of the LAN, and have the streaming automatically load balance between all those servers? So for example if we have 5 clients total, 3 of which are connected to "Server 1" the next client gets sent to "Server 2" since it's less loaded?
I know there's load balancing for web servers but will that work for real-time HTTP video streaming? We're talking 1 minute or less of latency here, "live" for all intents and purposes.
I guess what I'm asking is does software exist to do this sort of thing, or do I need to learn PHP and write some?