My prior experience with servers has generally been limited to home file-sharing servers, low-traffic web-servers, and the like. This leaves me with the technical knowledge of how to set up a system, but little experience in terms of scaling said system.
My current project, however, has me as the technical lead in setting up a school for online audio and video streaming. The difficulty I'm running into is that I don't quite have the experience to guess what they'll need, and they don't have the experience to tell me - so I've tried to ask as many pertinent questions about what they want to do with their server, and here's what I found out:
- About 1000 simultaneous users, and hoping to expand (possibly significantly)
- Both video and audio streaming, at obviously the highest quality possible
- Support for both live and playlist-based streaming.
- Probably only one channel, but as it's an educational opportunity, I imagine letting them have a few more wouldn't hurt. (strike this - I thought that channels was referring to streams, which is odd, given that I'm originally an audio guy!)
- No word on whether they're locked into Windows or whether Linux is acceptable.
- Approximate budget - $7000. It may actually be about $2k less than this, because of a mishap with another technology firm (they ordered a $7000 DV tape deck for some reason, and now the company wants them to pay a 30% restocking fee).
The tentative decisions I've already made:
- I'm planning on using Icecast 2 for my streaming server, fed by VLC Shoutcast encoding.
- Since the school already has a DMZ set up, I plan on placing the Icecast server in there, and feeding it through their intranet from a simple workstation computer in their studios.
- This system isn't in any way mission critical - it's an education tool (they're a media magnet school), so I figure redundancy is not worthwhile to them from a cost:benefit perspective.
What I don't know is this:
- How powerful of a server will I need?
- What is likely to be my major throttle - bandwidth? How can I mitigate that?
- Will I need anything special for the encoding workstation other than professional video and audio capture cards and a copy of VLC?
- Are there any other considerations that I'm simply missing?
Thanks a lot for any help - if there's more information you need, let me know and I'll tell you all I can.
Edit 1:
I'm expecting to go out either in OGG or MP3 - probably MP3 as it's more widely supported (and more familiar to parents of grade-school students.
The content will consist of live/prerecorded standard definition video packages (likely in Quicktime, for the latter). Audio-only broadcasting will likely consist of MP3s, transcoded down to a more manageable quality. DRM is not an issue, nor is copyright (at least, copyright is not my issue). Content is generated whenever the students feel like broadcasting something, but the storage of this media shouldn't be a problem. They're not generating raw movie footage here - they're kids doing small TV packages - I'll throw 4 Terrabyte hard drives in RAID 10 on the workstation and call it a day.
Much of the rest doesn't quite seem to apply. The most relevant portion is the inherent limitations on the network. When I tried to inquire about what those might be, they really had no idea - as they've never really stress-tested it. Their internet connection is used largely for standard internet service for the students and teachers, and serving a website likely built in the 90s. I doubt they'll go through an expensive refitting of their NAT and front-end systems - the kids will simply have to live with what they have.
I don't think my server(s) will have to worry about massive caching, or large chunks of data storage - they will simply receive the stream ready to go from the internal workstation/source client, and have to replicate and distribute the stream to the clients. I expect to run into bandwidth bottlenecks before I find myself clamoring for more memory.
Regarding multicasting - I thought the internet at large didn't support it - and external clients make up the large bulk of our potential subscribers. My big question is a bit more rudimentary - what is a "decent server"/server system for this sort of application? I'm having difficulty envisioning what quantity of machines I will need, as well as what they need to be capable of. Any thoughts? Thanks in advance.