System architecture of Cam Chat Websites (tinychat, omegle, cam4)

flashinstant-messagingstreamingvideo streamingvideo-conferencing

Do anybody know what kind of system architecture is behind Websites like tinychat, omegle, cam4, chatroulette? And how much bandwith is needed per connection?

If I'm not wrong they use some video streaming Server like Flash Media Server, Wowza Media Server, Red5, Erlyvideo but this would eat for 20'000 users around 1 Gb/s bandwith?
Or do they use some software who is wroking peer2peer? I found some kind of such Software but they all requires some UDP ports to be opened.

Do anybody know how much users 1 server instance with some of the above server software can handle?

Im happy for any background information.

Best Answer

At least chatroulette is using RTMFP and stratus to push video from client to client, without passing it to a server (no big bandwidth usage). This goes through most simple home-networks thanks to hole punching.

The session setup and metadata passes through a server but that's simple message passing one could do with almost any technology today. Afaik they're using FMS for that.

See http://labs.adobe.com/technologies/stratus/ and http://blogs.adobe.com/collabmethods/2008/12/try_rtmfp_and_clienttoclient_d.html

The rough flow is as follows:

  1. user fires up browser to the site
  2. Flash client connects to the server (outbound connection to server, could be rtmp or anything)
  3. Flash client gets special permission to connect beyond the policies built in through the stratus api
  4. Flash client executes UDP hole punching at the same time as the other person's client is. A direct UDP link is estabelished and they exchange audio/video data

I'd have to research it a bit to figure out what they do for fallback, but most likely it's a simple server relay of data, with the throughput requirements attached.

Related Topic