Open Media Server (oms) is a flexible, scalable and fault redundant media server that complements VoIP signaling services. It is designed as an end point for originating, terminating and forwarding RTP (RFC 3550 compliant) media streams. You can use it to play media from files, record media, transcode media, detect and generate DTMF digits, create conferences, and so on.
oms is free and open source. It is entirely written in C and can be compiled on Unix and MS Windows systems. The communication with the signaling application is made using an XML API. Commands and events are transmitted via sockets.
The main concept of oms gravitates around an extensible collection of media processors that handle audio streams in real time. An external application uses primitive or macro commands that create media processors instances, and connect them one to eachother in order to deliver the processed streams to appropriate destinations. Examples of media processors are RTP streams receivers and senders, codecs, audio files readers and writers, conference mixers, and audio signal analyzers.
oms currently implements:
unicast RTP streams, RFC 3550 compliant, including RTCP reporting and handling
SDP negotiation for media offer and response, RFC 2327 compliant
different RTP profiles and encoding / decoding: G.711 u-Law and A-Law, G.721/G.726-32 ADPCM, iLBC, speex, GSM
DTMF digits detection and outpulsing, RFC 2833 compliant
raw PCM and wav format audio files playing and recording
multi-party conference mixers
media energy analyzers
Rather than providing the glue for a few different libraries available, most of the oms code has been originally built from scratch. The documentation is not limited to providing build instructions and a few words about the API; it also includes in-depth information about the concept, and the source code is heavily commented. Hopefully this will attract a number of contributors to the project. Source code maintenance is made with subversion, we use a support forum and wiki pages.