GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. For instance, GStreamer can be used to build a system that reads files in one format, processes them, and exports them in another. The formats and processes can be changed in a plug and play fashion. GStreamer supports a wide 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, transcoders, streaming media broadcasters and media players. It is designed to work on a variety of operating systems, e.g. the BSDs, OpenSolaris, Android, macOS, iOS, Windows, OS/400. GStreamer is free and open-source software subject to the terms of the LGPL-2.1-or-later and is being hosted at freedesktop.org. The GNOME desktop environment, a heavy user of GStreamer, has included GStreamer since GNOME version 2.2 and encourages GNOME and GTK applications to use it. Other projects also use or support it, such as the Phonon media framework and the Songbird media player. It is also used in the WebKit browser engine. GStreamer also operates in embedded devices like the Jolla Phone, the Palm Pre, Tizen and the Nokia 770, N800, N810, N900 and N9 Internet Tablets running the Maemo operating system. In addition to source code releases, the GStreamer project provides binary builds for Android, iOS, OSX and Windows. The LIGO Laboratory make use of GStreamer to simulate and analyze gravitational wave data. The GStreamer interface is called GstLAL. GStreamer is written in the C programming language with the type system based on GObject and the GLib 2.0 object model. A library written in one programming language may be used in another language if bindings are written; GStreamer has a range of bindings for various languages such as Go, Python, Rust, Vala, C++, Perl, GNU Guile, C# and Ruby.
Pascal Frossard, Nikolaos Thomos, Eymen Kurdoglu