Platform Architecture



Media Cloud Components

  • Load balancer – manages the clusters of servers. This is the controller of the elastic Media Cloud.
  • Streaming servers – a cluster of streaming servers. The main responsibility is broadcasting and providing elastic input putthrough for the incoming streams.
  • Post-processing servers – a cluster of post-processing servers. The main responsibility is processing of the saved media data (audio, video, text/XML).
  • Pre-processing streaming servers – a cluster of streaming servers with stream pre-processing utilities. The main responsibility is optimizing and overlaying streams as well as providing elastic output putthrough for the outcoming streams.

Each cluster node is a cloud instance with running JVM and an OSGi environment. OSGi is used as a basis component infrastructure for the system modules. This gives us great flexibility, extensibility and many other benefits. Within each OSGi container we host specific software services, e.g. Red5 or FMS in the Streaming Cluster and Xuggler+FFMPEG in the Post-Processing Cluster.

The File Storage is used for persisting the saved streams or media files. We naturally use S3 as a file storage, though it is possible to attach 3rd party persistence, if necessary.

Actors

Content Providers Content Consumers
Live (stream) Sender – transmits a stream to the MC via RTMP Receiver – receives a stream from the MC via RTMP
On-demand (file) Uploader – uploads a file either directly to FS or via MC post-processing Downloader – downloads a file from the FS via HTTP

Media types and sources

Live (stream):

  • video from webcam, tv-capturer, other media server, etc.
  • audio from microphone, music player, online radio, other media server, etc.
  • text from e.g. chat client, XML, other web-services, CloudFront, etc.

On-demand (file):

  • video as a file in supported format
  • audio as a file in supported format
  • text data file (e.g. XML)