| GStreamer | ||
|---|---|---|
|
| ||
|
| ||
| Información general | ||
| Tipo de programa | Framework | |
| Autor | Erik Walthinsen | |
| Desarrollador | Desarrolladores de GStreamer | |
| Lanzamiento inicial | 11 de enero de 2001 | |
| Licencia | GNU Lesser General Public License | |
| Información técnica | ||
| Programado en | C | |
| Versiones | ||
| Última versión estable | 1.28.3 (info) (11 de mayo de 2026 (5 meses y 22 días)) | |
| Última versión en pruebas | 1.29.229 de junio de 2026 | |
| Archivos legibles | ||
| ||
| Enlaces | ||
GStreamer es un framework multimedia libre multiplataforma escrito en el lenguaje de programación C, usando la biblioteca GObject.
GStreamer permite crear aplicaciones audiovisuales, como de vídeo, sonido, codificación, etc. Por ejemplo, con GStreamer se puede reproducir música o realizar tareas más complejas como mezclar audio y vídeo. El diseño de la canalización sirve de base para crear diversos tipos de aplicaciones multimedia, como editores de vídeo, transcodificadores, emisoras de streaming y reproductores multimedia.
La función del núcleo de GStreamer es proveer un framework para complementos, flujo de datos y manejo/negociación de distintos tipos de medios. También provee una API para escribir aplicaciones.
Está diseñado para funcionar en una variedad de sistemas operativos, por ejemplo, BSD, OpenSolaris, Linux, Android, macOS, iOS, Windows, OS/400.
GStreamer es un software gratuito y de código abierto sujeto a los términos de la LGPL-2.1 o posterior y está alojado en freedesktop.org.
El proyecto fue fundado el año 1999 por Erik Walthinsen. Algunas de sus ideas fueron tomadas desde un proyecto de investigación desarrollado en la Universidad de Oregón. Gracias a la incorporación de Wim Taymans al proyecto, muchos aspectos del sistema fueron expandidos. Por supuesto, muchos otros desarrolladores a lo largo y ancho del planeta han contribuido para el buen camino de este proyecto. El logo fue diseñado por Brock A. Frazier. GStreamer recibe hospedaje en freedesktop.org, lo que de algún modo permite una mayor interoperabilidad entre distintos sistemas libres. La primera publicación importante fue la versión 0.1.0, que fue anunciado el 11 de enero de 2001.
Inicialmente fue adoptado por el proyecto GNOME, a partir de su versión 2.2, luego siguió su evolución y cada vez más aplicaciones lo utilizan.
El entorno de escritorio GNOME, un usuario intensivo de GStreamer, lo incluye desde la versión 2.2 de GNOME y fomenta su uso en aplicaciones GNOME y GTK. Otros proyectos también lo utilizan o lo soportan, como el marco multimedia Phonon y el reproductor multimedia Songbird. También se utiliza en el motor de navegación WebKit.
GStreamer también funciona en dispositivos integrados como el Jolla Phone, el Palm Pre, Tizen y las tabletas de Internet Nokia 770, N800, N810, N900 y N9 que ejecutan el sistema operativo Maemo.
Además de los lanzamientos de código fuente, el proyecto GStreamer proporciona compilaciones binarias para Android, iOS, OSX y Windows.
El Laboratorio LIGO utiliza GStreamer para simular y analizar datos de ondas gravitacionales. La interfaz de GStreamer se denomina GstLAL.
GStreamer, ha sido portado a variados sistemas operativos (Linux, MacOS, Windows, Solaris), procesadores (x86, SPARC, PPC, ARM) y compiladores (GCC, MS Visual Developer). Prueba de ello son otros dispositivos como el Nokia 770 y Nokia N800 (basados en la plataforma de desarrollo Maemo), los que hacen uso de GStreamer.
GStreamer basa su funcionamiento en complementos, los cuales pueden proveer de Códecs o más funcionalidades.
Una excelente herramienta para entender cómo funciona GStreamer es gst-launch-version (por ejemplo gst-launch-0.10). Si quisiéramos reproducir un archivo.mp3 podríamos usar desde una consola:
gst-launch-0.10 filesrc location="archivo.mp3" ! decodebin ! alsasink
En cierto modo, gst-launch es a GStreamer, como una consola es a UNIX. Básicamente, el comando anterior, consiste en:
Para poder entender GStreamer debemos conocer los siguientes conceptos básicos orientados a él:

Con todos estos elementos puedes, por ejemplo: