Farstream - Audio/Video Communications Framework

The Farstream (formerly Farsight) project is an effort to create a framework to deal with all known audio/video conferencing protocols. On one side it offers a generic API that makes it possible to write plugins for different streaming protocols, on the other side it offers an API for clients to use those plugins.

The main target clients for Farstream are Instant Messaging applications. These applications should be able to use Farstream for all their Audio/Video conferencing needs without having to worry about any of the lower level streaming and NAT traversal issues.

Farstream forms an integral part of the Telepathy framework. It is used by Empathy through the Telepathy-Farstream library. The Telepathy-Farstream library binds it to the Connection Managers via D-Bus and the Telepathy Media Stream Spec and is used for all their streaming requirements.

Telepathy and Farstream constitute the first implementation of the Jingle XMPP protocol.

Farstream deals with all the streaming specific parts of the protocol and leaves the signaling to the clients. The Farstream plugin API is heavily influenced by the ICE (Interactive Connectivity Establishment) RFC draft. This API allows for an easy interaction between the signaling and streaming parts of the sessions.

Farstream uses GStreamer for all it's media streaming needs. A large part of the project is to provide the required elements and improvements to GStreamer in order to deal with streaming protocols such as RTP.

Farstream is written in C using GLib and uses GObjects extensively. Versions before 0.2 provide python bindings, version 0.2 and later uses GObject Introspection to provides bindings, it is known to work with Python, but other GObject Introspection based bindings should also work.