1

I'm working on a personal project to further my own education.

I want to find out what model streaming media servers typically use to achieve maximum performance on limited resources while connecting to a single shared resource but sending it to multiple resource.

For example: Let's say we have a web camera that has fixed amount of bandwidth (1 mb/s). We have a variable number of viewers of this webcam. If the camera can produce high quality video that will saturate it's upstream capability, we would be limited to 1 connection. But we want to fulfill all these connection requests. So we put a streaming media server in between.

What methodology do they typically use to multistream this single session? I've been investigating shared memory, messaging queues.

I've successfully written a simple multiconnection server using a binary pub-sub message queue, but I'm looking for other solutions to this problem. Not because it isn't working, but because I want to know how others do it.

My question is, what are the typical programming methodoligies utilized by streaming media servers (FFServer, Red5, WMS, FMS, etc.) to connect to a single realtime resource and syndicate that to multiple clients.

This is language agnostic, I'm more interested in the concepts than the implementation.

Michael Rice
  • 1,173
  • 5
  • 13

1 Answers1

0

Adobe Flash uses a kind of P2P technology. You can watch it when using the CNN website's live stream. After a while of watching you can see that you have the same upstream then downstream. There is also a new process in your task manager called "omnixyz-something". This process manages the P2P forwarding of your stream to other viewers. You can see some nice graphics about the concept involved in here: http://labs.adobe.com/technologies/cirrus/ Although I doubt a bit that currently Adobe's RTMFP is as flexible as the second graph displays. The graph is nice but technically I think the number of nodes a single viewer is connected in the network of "seeders" is limited. So you only forward your stream to 1,2,3 people but not to "unlimited" as the graph indicates.

seba.wagner
  • 3,800
  • 4
  • 28
  • 52
  • Thanks Seba, but I'm trying to find out the programming design patterns. Do they use share memory with semaphores, mutexes, and locks to achieve this or do they use messaging queues or something entirely different? – Michael Rice Aug 16 '12 at 16:58
  • Sorry I think your question is too general to answer it with any specific method. Red5 for example uses Apache Mina to queue packets. Mina basically provides a framework to program Protocols and split them in Coders and Decoders. – seba.wagner Aug 23 '12 at 14:31