Components

A single Flumotion system is called a Planet. It contains several components working together. Some of these are Feed components, for instance to receive data, encode it, and stream it. This group of Feed components is called a Flow. You could imagine it as a flowing river on the surface of the Planet. Each Flow component outputs data that is taken as an input by the next component in the Flow, transforming the data step by step.

Other components may perform extra tasks, such as restricting access to certain users, or allowing users to pay for access to certain content (Bouncer components). This group of components is called an Atmosphere. Again, it is part of the Planet.

[Note] Note

Flumotion's planet metaphor does not go further than this. It only involves the flow and an atmosphere.

This diagram shows a Planet with Components in both the Atmosphere and Flow.

Figure 4.1. The Flumotion Architecture

The Flumotion Architecture

Feed Components

Feed components are arranged in a flow, connecting to each other in sequence. Each component may be in only one flow and must be connected to another component in the same flow.

There are three types of feed components:

Producer

A producer only produces stream data, usually in a raw format, though sometimes it is already encoded. The stream data can be produced from an actual hardware device (webcam, FireWire camera, sound card, etc), by reading it from a file, by generating it in software (test signals), or by importing external streams from Flumotion servers or other servers.

A feed can be simple or aggregated. For example an aggregated feed might produce both audio and video.

For example, an audio producer component (such as soundcard-producer) provides raw sound data from a microphone or other simple audio input. Likewise, a video producer (such as firewire-producer) provides raw video data from a camera.

Converter

A converter converts stream data. It can encode or decode a feed. It can combine feeds or feed components to make a new feed. It can change the feed by changing the content, overlaying images over video streams, compressing the sound, etc.

For example, an audio encoder component (such as the vorbis-encoder) can take raw sound data from an audio producer component (such as the soundcard-producer) and encode it, for instance as Ogg Vorbis or MP3. The video encoder component (such as the theora-encoder) can encode data from a video producer component (such as the firewire-producer), for instance as Ogg Theora or MPEG.

Note that combiner converters can take more than one feed. For instance, the single-switch-combiner component can take a master feed and a backup feed. If the master feed stops supplying data then it will output the backup feed instead. This could show a standard "Transmission Interrupted" page.

Muxers are a special type of combiner component. For instance, the ogg-muxer component combines audio and video (for instance, from vorbis-encoder and theora-encoder) to provide one stream of audiovisual data, with the sound synchronized correctly to the video.

Consumer

A consumer only consumes stream data. It might stream a feed to the network, making it available to the outside world, or it could capture a feed to disk.

For example, the http-streamer component can take encoded data (for instance, from a ogg-muxer component) and serve it via HTTP for viewers on the Internet.

Other consumers, such as the shout2-consumer component can even make Flumotion streams available to other streaming platforms, such as IceCast.

Other Components

The other components are part of the Atmosphere. They provide additional functionality to flows and the manager and are not directly involved in creation or processing of the data stream.

Here are some examples of other components:

Bouncer

A bouncer implements an authentication mechanism. It receives authentication requests from a component or manager and verifies that the requested action is allowed. A bouncer could be implemented using a standard htpasswd file, an LDAP username/password backend, or any other mechanism.

For instance, the htpasswdcrypt-bouncer), controlled by an Apache-style htpasswd format uese crypted passwords.