A media server is required for capturing video from Flash but none of them seem to have any documentation available (not even API docs or other source code comments). I would prefer crtmpserver because my application is written in C++ and it needs to receive and process the captured data in real time. However, Red5 is clearly a lot more mature and better known project so I do consider that an option too. Adobe FMS is too expensive and might be difficult to integrate with my application as Adobe never mentions such use case.
As far as I can tell, one has to write an “application” for the media server (they don’t ship with anything usable) and that will then have to forward the data for actual processing. What sort of data can an application expect from the media server, is it going to be a plain FLV stream or is there something more to it (bandwidth negotiations etc)?
Coding the Flash side is not an issue, there are plenty of examples for that (even if they don’t tell how the media server URL should be constructed).
The actual question: how does the server side work (high level view) and is there anything to get one started with the live capture functionality?
A couple years back I was working on an e-learning project that allowed the students to record an answer (audio only in my case) and the professor could listen to it and grade the student.
We considered Adobe FMS, Wowza Media Server (http://www.wowzamedia.com) and Red5. In the end Red5 was chosen because it was the only free open source options which was stable enough to be used in this project, even though it lacked much documentation.
How it worked was I ended up modifying one of the packaged examples to suit my need and had the server running on Mac OS 10.4.? Red5 basically grabbed the audio stream and saved the file to a directory on the machine. I had to then update the database to point to the audio file for the professor to be able to play it. Note, I did not do any live modification or re-broadcasting of the stream; in case that’s part of the scope of your project.
Anyway, Red5 didn’t have much of a community at the time so I wasn’t able to contribute what I had learned to their documentation but it seems like they’re more active now and if you do choose to go with Red5 I would ask that you become involved in the project and help document it.