Welcome to whisperCast
What is whisperCast
whisperCast is a free, open source and extensible solution for media distribution. We hope you find it useful for your own Internet media projects.
Overview
whisperCast can be used to stream files, broadcast events (and save media files on the fly), serve playlists and insert clips into your streams, display information bubbles for your videos or add overlays to them (with extra package), build a network for media delivery and so on. Basically, due to its modular structure, the possibilities are limitless.
Operating System
Server: Unix / GNU-Linux. We are using Ubuntu (7.10, 8.04, 8.10) for development, and it is our distribution of choice. We have also built and tested it on OpenSuse.
Client: whisperPlayer is implemented using Adobe Flash, which can run on the majority of operating systems out-there (still, we are trying to find a solution for those iPhone users :)).
Development/Build platform
The server components are written in C++ and compilable with gcc (version 3.1 or later). We currently use gcc 4.2 and 4.3. We use cmake as our main build system.
The player is developed in Adobe Flash. We also provide a compiled (swf) version of the player for your convenience. Protocols
Licensing
whisperCast is free and open source software. We offer most of the software under a BSD-style license. Certain components are LGPL. (There are also some commercial? components offered by whisperSoft, available under a commercial style license.)
Supported streaming protocols
HTTP, RTMP
Media Formats
Supported media formats for streaming: Flash Video (flv/f4v), mp4, mp3, AAC.
Performance
For live streaming (i.e. no disk access involved): about 2500 simultaneous clients for a 500kbps stream, per core of Intel Xeon 2.0 GHz processor.
For streaming or stored files: depends on the disks, but we see about 400 simultaneous users for different 500kbps streams on a normal (SATA) 7200 rpm disk. The performance grows about linearly with the number of disks, if the user requests are uniformly distributed among the disks (i.e. you can serve about for 2000 simultaneous users with 5 disks, if you mirror your media on all disks).
Components
There are several components of the system:
whisperLib
This is a general purpose library. Contains code for common things like logging and file manipulation, networking, an HTTP protocol implementation (server&client), and an RPC library.
You may find this very useful by itself, to develop your own, unrelated project. It is stable, has a high performance and is quite easy to use.
It is distributed under a BSD-style license
whisperStreamLib
This is more specific library, useful for streaming. Contains a partial RTMP protocol implementation (just the parts necessary for streaming media), code for splitting media streams into components ('tags'), and code for dealing with media elements and policies, the all-powerful building blocks for a media distribution scheme.
It also contains a set of standard elements (as a plug-in module for whisperCast), that allow versatility for a wide range of media distribution scenarios.
It is distributed under a BSD-style license
whisperCast
This is a streaming server itself. It puts together components from whisperLib and whisperStreamLib into a full solution for media streaming and distribution. The input for streaming can come from files, pushed or pulled streams (from another whisperCast or whisperer [see bellow]), mixed, mangled and massaged inside the server, according to your desire, and served to the user via HTTP or RTMP protocols.
Some extra utility programs are also included in this package.
It is distributed under a BSD-style license.
whisperMediaLib
This library wraps around a slightly modified version of gStreamer library and facilitates the building of gStreamer pipelines.
It is distributed under the LGPL.
whisperer
This is a server that can encode live streams to be served through whisperCast. It can be used as the feeding point for an entire distribution network, as the encoded stream from a camera (or other capture device, like a tv-tuner) can be be pushed to (or pulled by) whisperCast for serving.
It is distributed under a BSD-style license.
whisperPlayer-Basic
This is a Flash component to be included in your serving media. It is a media player that interacts nicely with whisperCast. We highly recommend using it as a client for your streams served with whisperCast (as it has some specific code for treating various serving situations like live streams or seeks).
It is distributed under a BSD-style license.
