Mammoth - The Open Source Flash Streaming Server
Introduction
Mammoth is becoming a full blown high concurrency C++ Flash Streaming Server running on windows and *nix. Its main purpose is to spend as much time in kernel and as little in userspace as possible, in other words getting the most out of your hardware.
News
11-21-2008:
Working hard for a first beta! Today I've done some serious work on the internal/external broadcast mechanism. This will be used for the future built-in Lua scripting engine, and allows you to broadcast messages to all clients or to individuals. It is also used for live stream broadcasting. An added bonus is the fact that we have direct built-in support for edge/origin type configurations! Have a look at the settings file to see how easy it will be to deploy Mammoth to multiple servers!
11-17-2008:
Succesfully compiled on linux, I will be checking once a while if it still compiles and runs, but like everything... serious testing needs to be done.
11-07-2008:
Although no news for the last month we're not sitting still; you should have a look at the changelog to see the actual progress. Demo plugins are in the works; we currently have built-in speech and face recognition plug-ins that do real-time processing! The speech recognition plug-in needs more serious work though, Sphinx the continuous speech recognition system used is not for the faint hearted...
09-30-2008:
To avoid possible legal issues the project has been renamed from OpenFMS to Mammoth.
Features
- currently streams all possible Flash codecs: h263, h264, mp3, vp6, speex, nellymoser, etc...
- rtmp, rtmpt, rtmpe (rtmpte & rtmps still in the works)
- thanks to FFmpeg we have container support for almost every thinkable format: mov, flv, mkv, mp3, etc..
- built from the ground up while looking and learning from red5 code
- easy vhosts structure in the form of plugins
- live / record publishing (uses FFmpeg flv muxer to store in FLV format)
- FME compatible publishing (flv muxing of h264 and vp6, still needs to be fixed though)
- fully asynchronous with configurable threading model
- makes use of cmake, 'the' cross-platform build system
- uses a modifed version of boost channel for message broadcasting (gives us easy future access to edge/origin like configurations)
- application distribution (edge/origin)
Status
- we are still in alpha, and have a long way ahead of us: (read the TODO in the subversion repository for details and personal priorities)
- extended profiling & performance testing
- fms (w3c) compatible logging
- rtmpte / rtmps support
- rtp publishing (using FFmpeg)
- amf3 support
- fast keyframe caching
- statistics
- administration console
- integrate lua as the main scripting engine
- still needs thorough testing on *nix and bsd (cmake is there though!)
Requirements
To compile the sources, you'll need:
- Boost C++ Libraries
- high-quality cross platform C++ libraries (Mammoth uses asio, filesystem, date_time, mpl, fusion, threads, etc..)
- FFmpeg
- FFmpeg is a complete solution to record, convert and stream audio and video (Mammoth currently uses libavformat for (de)muxing, and libavcodec for de(re)coding).
- OpenSSL
- The most widely used ssl library (we use it for h264 compatible handshaking, diffie hellman handshaking, rc4 encryption and last but not least, ssl).
- Threading Building Blocks
- The most obvious way to bring parallelism into your application (although we only use its scalable memory allocators, atomic functions, and containers).
- CMake
- CMake is a cross-platform, open-source build system that generates simple platform and compiler independent configuration files.
Download
Mammoth is still in alpha so there are no executables just yet, for now get the sources from the Sourceforge subversion
repository.
License
Mammoth is distributed under the terms of the GNU Lesser General Public License