Project Page | Download | CVS | API Documentation | Contact | Credits | Author Donation
Fluid Streaming Server - Final Version

Fluid Streaming Server, Final Version, is a media streaming server software and development API built on the Java Platform. The first version (Beta1) was built in 1998 and released as Open Source (Beta2) in 2000. It has since then undergone quite a few changes. The previous release (RC2) has been used as a base for several other streaming solutions.

The latest version comes with a redesign of the architecture. Fluid is now built using robust patterns and with a symmetry in how it handles the stream. Several other additions have been made to support features that were not available in the earlier releases, such as buffering and on demand service of media.

The architecture is based on the assumption that you want to connect some kind of media source with a target for the same media. To do so it uses input and output connectors, which more or less wrap input and output streams with the extra handling needed for different kinds of connections to the source and target. Using the listener pattern the connectors can exchange stream events. This provides the basis for on demand service of media or sending media descriptors back to the client. On the next level the frame reader and writer is found, responsible for handling the media dependent frames. Media may be read in one format and encapsulated in another before written to the output. Adding support for new media formats is done through inheritance and easily included using dynamic class loading. On top of that are two media independent engines; one for reading and one for writing. They are implemented in a producer-consumer pattern and run in their own threads sharing a constrainable frame buffer. All inter-thread communication is handled through the mutex-like transceiver. In the middle of it all is the configuration, which uses an observer pattern to notify all the other parts whenever a change has been made. This way the configuration is not limited to be read at startup, but can be changed in run time. All in all a very flexible framework for building media servers.

Lars Rönnbäck - lars@subside.com SourceForge Logo