gstreamer is a graph-based multimedia framework for open source projects, licensed under LGPL (and portions under GPL and BSD licenses).

gstreamer is the project that attempts to bring the free UNIXes the same multimedia capabilities as many commercial OSes have. Currently, in UNIXes, each player has its own way of handling different audio/video stream formats and codecs. But, when using gstreamer, people can write one codec or one stream format handler or one data filter and it's immediately available in all applications that use gstreamer. In a way, it's similar in intent to Windows multimedia APIs and Apple's QuickTime.

The applications use gstreamer by building a graph of the different elements. For example, to decode a MP3 file, all you need to do is to add a file reader, add mpg123 to the chain, and then add a component to play it to the soundcard. If you want effects, just throw in a couple of LADSPA plugins. Of course, there's also a graph autobuilder; Throw a file at the autobuilder, it figures out the format of the stream, and constructs a full-blown file playback pipeline!

(Note: This is how I understood it from the web pages - I'm not an expert =)

GNOME project plans on eventually making gstreamer an official part of the GNOME infrastructure.

Home page: http://www.gstreamer.net/

While one of its main goodies is the abstraction of audio/video codecs, gstreamer is a lot more than a codec plugin infrastructure. It's primary feature is that it's graph-(or node-)based, meaning that you can setup basically arbitrary media processing pipelines.

The graph-based approach resembles the idea of M$'s DirectX, SGI's Digital Media lib, BeOS's MediaKit and others. In this respect, it is similar to what you see in Max/MSP, Miller Puckette's pd and quite some audio apps.

some example pipelines using the gst-launch prototyping tool:
  • gst-launch filesrc location=test.mp3 ! mad ! osssink
  • gst-launch v4lsrc width=320 height=240 ! shagadelicTV ! xvideosink disable-xv=true

A single filter in gstreamer is called an "element". It has zero or more input "pad"s ("sink"s) and zero or more output pads ("source"s, or "src"s). It might well also have a bunch of parameters (GObject properties), and GTK-like "signals" (eg, filesrc will signal an EOF).

gstreamer is written following the GLib/GObject paradigm, meaning it is object-oriented, but in plain C, bringing all the good (portability, language bindings) and bad (code that needs some getting-used-to) that also comes with GTK+.

Log in or register to write something here or to contact authors.