# GStreamer

GStreamer is a pipeline-based multimedia framework written in the C programming language with the type system based on GObject.

GStreamer allows a programmer 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 (Intel and SPARC), macOS, Microsoft Windows and OS/400. GStreamer has bindings for programming-languages like Python, C++, Perl, GNU Guile (guile), and Ruby. GStreamer is free software, licensed under the GNU Lesser General Public License.

## Installation

Install a GStreamer version from the official repositories:

- gstreamer - Current version.
- gstreamer0.10 - Legacy version.

To make GStreamer useful, install the plugins packages you require.

### Current version plugins

- gst-libav - Libav-based plugin containing many decoders and encoders.
- gst-plugins-bad - Plugins that need more quality, testing or documentation.
- gst-plugins-base - Essential exemplary set of elements.
- gst-plugins-good - Good-quality plugins under LGPL license.
- gst-plugins-ugly - Good-quality plugins that might pose distribution problems.
- gst-plugin-libde265AUR - libde265AUR plugin (an open h.265 video codec implementation) for gstreamer.

### Legacy version plugins

Tip: Install all of them at once as gstreamer0.10-plugins.

- gstreamer0.10-bad-plugins - Plugins that need more quality, testing or documentation.
- gstreamer0.10-base-plugins - Essential exemplary set of elements.
- gstreamer0.10-ffmpeg - Libav-based plugin containing many decoders and encoders.
- gstreamer0.10-good-plugins - Good-quality plugins under LGPL license.
- gstreamer0.10-ugly-plugins - Good-quality plugins that might pose distribution problems.

## Integration

### PulseAudio

PulseAudio support is provided by good plugins packages.

### Lightweight desktops

To configure GStreamer, for example to change the audio output device, use gstreamer-properties from package gstreamer-propertiesAUR. This can be run by each user or as root for all users. Per-user configuration files are under `$HOME/.gconf/system/gstreamer` and the global files are in `/etc/gconf/gconf.xml.defaults`.

### KDE / Phonon integration

See Phonon.

### Hardware acceleration

See Hardware video acceleration.

GStreamer will automatically detect and use the correct API [1]. Depending on your system you can install:

- gstreamer-vaapi for VA-API support.
- gst-plugins-bad for VDPAU support.

## Troubleshooting

### assertion 'mini_object->refcount > 0' failed

If you get an `GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object->refcount > 0' failed` error (which usually occurs when recording video), you can install gstreamer0.10-ffmpeg to fix it.

## See also

- Sound
- http://gstreamer.freedesktop.org/

Category:

- Multimedia