Jump to content

GStreamer: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
RzR~enwiki (talk | contribs)
No edit summary
Line 11: Line 11:
|}}
|}}


'''GStreamer''' is a [[Pipeline (computing)|pipeline]] based [[multimedia framework]] written in the [[C (programming language)|C programming language]] with the type system based on [[GObject]]. GStreamer allows you to create a variety of media-handling components, including simple audio playback, audio and video
'''GStreamer''' is a [[Pipeline (computing)|pipeline]] based [[multimedia framework]] written in the [[C (programming language)|C programming language]] with the type system based on [[GObject]]. GStreamer allows you to create a variety of [[media-handling components]], including simple [[audio playback]], audio and video
playback, recording, streaming, and editing. The pipeline design serves as a base to create many types of streaming multimedia applications such as video editors, streaming media broadcasters, and media players.
playback, recording, [[streaming]], and editing. The pipeline design serves as a base to create many types of [[multimedia applications]] such as [[video editors]], [[streaming media broadcasters]], and [[media players]].


Designed to be [[cross-platform]], it is known to work on [[Linux]] ([[x86]], [[PowerPC]] and [[ARM architecture|ARM]]), [[Solaris (operating system)|Solaris]] (x86 and [[SPARC]]), [[Mac OS X]], [[Microsoft Windows]] and [[OS/400]]. GStreamer has bindings for programming-languages like [[Python (programming language)|Python]], [[C++]], [[Perl]], [[GNU Guile]] and [[Ruby programming language|Ruby]]. GStreamer is [[free software]], licensed under the [[GNU Lesser General Public License]].
Designed to be [[cross-platform]], it is known to work on [[Linux]] ([[x86]], [[PowerPC]] and [[ARM architecture|ARM]]), [[Solaris (operating system)|Solaris]] (x86 and [[SPARC]]), [[Mac OS X]], [[Microsoft Windows]] and [[OS/400]]. GStreamer has bindings for programming-languages like [[Python (programming language)|Python]], [[C++]], [[Perl]], [[GNU Guile]] and [[Ruby programming language|Ruby]]. GStreamer is [[free software]], licensed under the [[GNU Lesser General Public License]].
Line 18: Line 18:
== Distribution ==
== Distribution ==


The [[GNOME]] [[desktop environment]], the primary user of GStreamer technology, has included GStreamer since GNOME version 2.2 and encourages GNOME and GTK+ applications to use it. Other projects also use it, such as [[Chameleo (software)|Chameleo]] media platform, [[Phonon (KDE)|Phonon]] and the [[Songbird (software)|Songbird]] media player.
The [[GNOME]] [[desktop environment]], the primary user of GStreamer technology, has included GStreamer since GNOME version 2.2 and encourages GNOME and [[GTK+]] applications to use it. Other projects also use it, such as [[Chameleo (software)|Chameleo]] media platform, [[Phonon (KDE)|Phonon]] and the [[Songbird (software)|Songbird]] media player.


GStreamer also operates in embedded devices like the [[Nokia 770]], [[Nokia N800|N800]] and [[Nokia N810|N810]] Internet Tablets running the [[Internet Tablet OS]].
GStreamer also operates in embedded devices like the [[Nokia 770]], [[Nokia N800|N800]] and [[Nokia N810|N810]] Internet Tablets running the [[Internet Tablet OS]].
Line 24: Line 24:
== History and development ==
== History and development ==


Erik Walthinsen founded the GStreamer project in 1999. Many of its core design ideas came from a research project at the [[Oregon Graduate Institute]]. [[Wim Taymans]] joined the project soon thereafter and greatly expanded on many aspects of the system. Many others around the world have contributed to various degrees since then. Brock A. Frazier designed the GStreamer logo; Frazier worked for an embedded Linux company called RidgeRun, which also became the first corporate [[sponsor]] of GStreamer in the form of hiring Erik Walthinsen to develop methods for embedding GStreamer in smaller ([[cell phone]]-class) devices.
[[Erik Walthinsen]] founded the GStreamer project in 1999. Many of its core design ideas came from a research project at the [[Oregon Graduate Institute]]. [[Wim Taymans]] joined the project soon thereafter and greatly expanded on many aspects of the system. Many others around the world have contributed to various degrees since then. Brock A. Frazier designed the GStreamer logo; Frazier worked for an embedded Linux company called RidgeRun, which also became the first corporate [[sponsor]] of GStreamer in the form of hiring Erik Walthinsen to develop methods for embedding GStreamer in smaller ([[cell phone]]-class) devices.


[[freedesktop.org]] hosts the GStreamer project, which accordingly aims to improve interoperability and to share technology between free desktops. As of 2008, Wim Taymans maintains GStreamer.
[[freedesktop.org]] hosts the GStreamer project, which accordingly aims to improve interoperability and to share technology between free desktops. As of 2008, Wim Taymans maintains GStreamer.
Line 73: Line 73:
* [http://www-128.ibm.com/developerworks/aix/library/au-gstreamer.html?ca=dgr-lnxw07GStreamer An introduction to GStreamer]
* [http://www-128.ibm.com/developerworks/aix/library/au-gstreamer.html?ca=dgr-lnxw07GStreamer An introduction to GStreamer]
* [http://www.ohloh.net/projects/3475?p=GStreamer GStreamer] project on [[Ohloh]]
* [http://www.ohloh.net/projects/3475?p=GStreamer GStreamer] project on [[Ohloh]]
* [irc://irc.freenode.net/gstreamer #gstreamer] on freenode
* [irc://irc.freenode.net/gstreamer #gstreamer] on [[freenode]]


{{Freedesktop.org}}
{{Freedesktop.org}}
Line 85: Line 85:
[[fr:GStreamer]]
[[fr:GStreamer]]
[[it:GStreamer]]
[[it:GStreamer]]
[[fi:GStreamer]]
[[nl:GStreamer]]
[[nl:GStreamer]]
[[ja:GStreamer]]
[[ja:GStreamer]]
Line 90: Line 91:
[[pt:GStreamer]]
[[pt:GStreamer]]
[[ru:GStreamer]]
[[ru:GStreamer]]
[[fi:GStreamer]]
[[sv:GStreamer]]
[[sv:GStreamer]]
[[tr:Gstreamer]]
[[tr:Gstreamer]]

Revision as of 13:29, 10 December 2008

GStreamer
Stable release
0.10.21 / 2 October, 2008
Repository
Written inC
Operating systemCross-platform
TypeMultimedia framework
LicenseGNU Lesser General Public License
Websitehttp://gstreamer.freedesktop.org/

GStreamer is a pipeline based multimedia framework written in the C programming language with the type system based on GObject. GStreamer allows you to create a variety of media-handling components, including simple audio playback, audio and video playback, recording, streaming, and editing. The pipeline design serves as a base to create many types of multimedia applications such as video editors, streaming media broadcasters, and media players.

Designed to be cross-platform, it is known to work on Linux (x86, PowerPC and ARM), Solaris (x86 and SPARC), Mac OS X, Microsoft Windows and OS/400. GStreamer has bindings for programming-languages like Python, C++, Perl, GNU Guile and Ruby. GStreamer is free software, licensed under the GNU Lesser General Public License.

Distribution

The GNOME desktop environment, the primary user of GStreamer technology, has included GStreamer since GNOME version 2.2 and encourages GNOME and GTK+ applications to use it. Other projects also use it, such as Chameleo media platform, Phonon and the Songbird media player.

GStreamer also operates in embedded devices like the Nokia 770, N800 and N810 Internet Tablets running the Internet Tablet OS.

History and development

Erik Walthinsen founded the GStreamer project in 1999. Many of its core design ideas came from a research project at the Oregon Graduate Institute. Wim Taymans joined the project soon thereafter and greatly expanded on many aspects of the system. Many others around the world have contributed to various degrees since then. Brock A. Frazier designed the GStreamer logo; Frazier worked for an embedded Linux company called RidgeRun, which also became the first corporate sponsor of GStreamer in the form of hiring Erik Walthinsen to develop methods for embedding GStreamer in smaller (cell phone-class) devices.

freedesktop.org hosts the GStreamer project, which accordingly aims to improve interoperability and to share technology between free desktops. As of 2008, Wim Taymans maintains GStreamer.

The current 0.10 stable release series began with the 0.10.0 release in December 2005 [1]. It has maintained API and ABI compatibility since.

Technical overview

GStreamer processes media by connecting a number of processing elements into a pipeline. Each element is provided by a plugin. Elements can be grouped into bins, which can be further aggregated, thus forming a hierarchical graph. This is an example of a filter graph.

Elements communicate by means of pads. A source pad on one element can be connected to a sink pad on another. When the pipeline is in the playing state, data buffers flow from the source pad to the sink pad. Pads negotiate the kind of data that will be sent using capabilities.

The diagram to the right could exemplify playing an MP3 file using GStreamer. The file source reads an MP3 file from a computer's hard-drive and sends it to the MP3 decoder. The decoder decodes the file data and converts it into PCM samples which then pass to the ALSA sound-driver. The ALSA sound-driver sends the PCM sound samples to the computer's speakers.

Plugins

GStreamer uses a plugin architecture which makes the most of GStreamer's functionality implemented as shared libraries. GStreamer's base functionality contains functions for registering and loading plugins and for providing the fundamentals of all classes in the form of base classes. Plugin libraries get dynamically loaded to support a wide spectrum of codecs, container formats, input/output drivers and effects.

Plugins can be installed semiautomatically when they are first needed. For that purpose distributions can register a backend that resolves feature-descriptions to package-names.

Since version 0.10 the plugins come grouped into three sets (named after the film The Good, the Bad and the Ugly),

Plugin set name Description
Good This package contains the GStreamer plugins from the "good" set, a set of high quality plug-ins under the LGPL license.[2] or according to Gstreamer, "contains a set of well-supported plug-ins under our preferred license"[3]
Bad GStreamer Bad Plug-ins comprises a set of plug-ins not up-to-par compared to the rest. They might closely approach good-quality plugins, but they lack something: perhaps a good code review, some documentation, a set of tests, a real live maintainer, or some actual wide use.[4]
Ugly This packages contains plugins from the "ugly" set, a set of good-quality plug-ins that might pose distribution problems[5]

Individual distributions may further sub-classify these plugins: for example Ubuntu groups the "bad" and "ugly" sets into the "Universe" or the "Multiverse" components.

References

  1. ^ Release Note - Announcement of first release in 0.10 stable series
  2. ^ gstreamer0.10-plugins-good package description (Ubuntu 6.10)
  3. ^ GStreamer release notes base plugins 0.10.0
  4. ^ gstreamer0.10-plugins-bad package description (Ubuntu 6.10)
  5. ^ gstreamer0.10-plugins-ugly package description (Ubuntu 6.10)