Articulo de referencia

GStreamer

gst-launch "},"author":{"wt":""},"developer":{"wt":"GStreamer Team"},"released":{"wt":"{{Start date and age|2001|01|11|df=yes}} "},"latest release version":{"wt":"{{wikidata|pro...

GStreamer es un marco multimedia basado en pipeline que conecta una amplia variedad de sistemas de procesamiento de medios para completar flujos de trabajo complejos. Por ejemplo, GStreamer se puede usar para crear un sistema que lea archivos en un formato, los procese y los exporte en otro. Los formatos y procesos se pueden cambiar fácilmente.

GStreamer admite una amplia variedad de componentes para el manejo de medios, incluyendo reproducción de audio simple , reproducción de audio y video, grabación , transmisión y edición. El diseño de la arquitectura sirve como base para crear diversos tipos de aplicaciones multimedia , como editores de video , transcodificadores , emisoras de medios en streaming y reproductores multimedia .

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 libre y de código abierto sujeto a los términos de la LGPL-2.1 o posterior [ 4 ] y está alojado en freedesktop.org .

Distribución y adopción

El entorno de escritorio GNOME , un gran usuario de GStreamer, lo incluye desde la versión 2.2 y anima a las aplicaciones GNOME y GTK a usarlo. Otros proyectos también lo usan o lo soportan, como el marco multimedia Phonon y el reproductor multimedia Songbird . También se usa en el motor de navegador WebKit . [ 5 ]

GStreamer también funciona en dispositivos integrados como el Jolla Phone , el Palm Pre , [ 6 ] Tizen y las tabletas Nokia 770 , N800 , N810 , N900 y N9 Internet que ejecutan el sistema operativo Maemo .

Además de las versiones del código fuente, el proyecto GStreamer proporciona compilaciones binarias para Android, iOS, OSX y Windows. [ 7 ]

El Laboratorio LIGO utiliza GStreamer para simular y analizar datos de ondas gravitacionales. La interfaz de GStreamer se llama GstLAL. [ 8 ]

Arquitectura de software

Descripción general
Núcleo de GStreamer con tres tipos diferentes de complementos
GStreamer es una canalización .

GStreamer está escrito en el lenguaje de programación C , con un sistema de tipos basado en GObject y el modelo de objetos GLib 2.0.

Enlaces de lenguaje

Una biblioteca escrita en un lenguaje de programación puede usarse en otro lenguaje si se escriben enlaces ; GStreamer tiene una variedad de enlaces para varios lenguajes como Go , Python , Rust , Vala , C++ , Perl , GNU Guile , C# y Ruby .

Descripción general

GStreamer procesa contenido multimedia conectando varios elementos de procesamiento en una tubería . Cada elemento es proporcionado por un complemento . Los elementos se pueden agrupar en contenedores , que a su vez se pueden agregar, formando así un grafo jerárquico. Este es un ejemplo de un grafo de filtro .

Los elementos se comunican mediante pads . Un pad de origen en un elemento puede conectarse a un pad de destino en otro. Cuando la tubería está en estado de reproducción , los búferes de datos fluyen desde el pad de origen al pad de destino. Los pads negocian el tipo de datos que se enviarán mediante capacidades .

El diagrama de la derecha ilustra la reproducción de un archivo MP3 mediante GStreamer. La fuente de archivos lee el archivo MP3 del disco duro del ordenador y lo envía al decodificador. Este decodificador procesa los datos del archivo y los convierte en muestras PCM , que luego se envían al controlador de sonido. El controlador de sonido envía las muestras de sonido PCM a los altavoces del ordenador.

Complementos

GStreamer utiliza una arquitectura de complementos que aprovecha al máximo su funcionalidad implementada como bibliotecas compartidas . [ 9 ] La funcionalidad básica de GStreamer incluye funciones para registrar y cargar complementos, así como para proporcionar los fundamentos de todas las clases en forma de clases base . Las bibliotecas de complementos se cargan dinámicamente para admitir una amplia gama de códecs , formatos de contenedor , controladores de entrada/salida y efectos.

Los complementos se pueden instalar de forma semiautomática cuando se necesitan por primera vez. Para ello, las distribuciones pueden registrar un sistema de gestión de dependencias que convierta las descripciones de las funciones en nombres de paquetes.

Desde la versión 0.9, los complementos vienen agrupados en tres conjuntos (nombrados en honor a la película El bueno, el malo y el feo ). [ 10 ]

Las distintas distribuciones pueden subclasificar aún más estos complementos: por ejemplo, Ubuntu agrupa los conjuntos "malos" y "feos" en los componentes "Universo" o "Multiverso" .

Además, hay un complemento GStreamer FFmpeg (llamado gst-libav por razones históricas [ 14 ] ) que amplía la cantidad de formatos de medios compatibles.

aceleración de vídeo

Mediante complementos especiales proporcionados por Texas Instruments, GStreamer utiliza la aceleración de hardware proporcionada, por ejemplo, por Texas Instruments DaVinci .

Existen varios bloques SIP capaces de realizar los cálculos necesarios para decodificar ciertos códecs de vídeo, como PureVideo , UVD , QuickSync Video , TI Ducati , entre otros. Esto requiere la compatibilidad del controlador del dispositivo , el cual, a su vez, proporciona una o varias interfaces , como VDPAU , VAAPI , Distributed Codec Engine o DXVA, para que el software del usuario final, como MPlayer, acceda a este hardware y le delegue la tarea de procesamiento.

Formatos de medios

Los complementos GStreamer Good, Bad y Ugly mencionados anteriormente proporcionan, además de elementos de procesamiento/filtros de todo tipo, compatibilidad con una amplia variedad de formatos de archivo, protocolos y códecs multimedia. Además de estos, la compatibilidad con más de cien formatos de compresión (incluidos MPEG-1 , MPEG-2 , MPEG-4 , H.261 , H.263 , H.264 , RealVideo , MP3 , WMV , etc. [ 20 ] ) se proporciona de forma transparente a través del complemento gst-libav .

Historia y desarrollo

Primeros tiempos

Erik Walthinsen fundó el proyecto GStreamer en 1999. Muchas de sus ideas de diseño principales surgieron de un proyecto de investigación en el Instituto de Posgrado de Oregón . [ 21 ] Poco después, Wim Taymans se unió al proyecto y amplió considerablemente muchos aspectos del sistema. Desde entonces, muchos otros desarrolladores de software han contribuido.

La primera versión importante fue la 0.1.0, anunciada el 11 de enero de 2001. [ 1 ] Poco después, GStreamer consiguió su primer patrocinador comercial. A finales de enero de 2001, contrataron a Erik Walthinsen para desarrollar métodos para integrar GStreamer en dispositivos más pequeños ( del tamaño de un teléfono móvil ). Otro empleado de RidgeRun, Brock A. Frazier, diseñó el logotipo de GStreamer. Posteriormente, RidgeRun tuvo problemas financieros y tuvo que despedir a parte de su personal, incluido Erik Walthinsen. El progreso de GStreamer no se vio afectado en gran medida.

El proyecto lanzó una serie de versiones principales: la 0.2.0 en julio de 2001, la 0.4.0 en septiembre de 2002 y la 0.8.0 en marzo de 2004. Durante ese período, el proyecto también modificó su estrategia de versiones: si bien las primeras versiones eran simplemente nuevas versiones, posteriormente el número intermedio comenzó a indicar una serie de versiones. Esto significó que el proyecto lanzó una serie de versiones 0.6.x y 0.8.x, con el objetivo de mantener la compatibilidad binaria dentro de cada serie. Erik Walthinsen prácticamente dejó de lado el desarrollo de GStreamer durante este tiempo, centrándose en otros proyectos.

En todas las series de lanzamientos, el proyecto enfrenta dificultades. Ninguna serie goza de gran popularidad en la comunidad Linux, principalmente debido a problemas de estabilidad y una grave falta de funcionalidades en comparación con proyectos de la competencia como Xine , MPlayer y VLC . El proyecto también sufre de falta de liderazgo, ya que Wim Taymans, el líder del proyecto desde la partida de Erik Walthinsen, prácticamente dejó de participar.

La serie 0.10

En 2004, se fundó una nueva empresa, Fluendo , que quería utilizar GStreamer para desarrollar un servidor de streaming, Flumotion , y también proporcionar soluciones multimedia para GStreamer. Durante este tiempo, Fluendo contrató a la mayoría de los desarrolladores principales, incluido Wim Taymans, y atrajo el apoyo de empresas como Nokia e Intel para llevar GStreamer a un nivel profesional e impulsar su adopción por parte de la comunidad.

Con Wim Taymans de nuevo al mando, el núcleo de GStreamer fue rediseñado y se convirtió en lo que es la serie actual 0.10.x, cuyo primer lanzamiento (0.10.0) fue en diciembre de 2005. [ 22 ] Ha mantenido la compatibilidad de API y ABI desde entonces.

Con un nuevo núcleo estable, GStreamer ganó popularidad en 2006, siendo utilizado por reproductores multimedia como Totem , Rhythmbox y Banshee, y muchos más posteriormente. También fue adoptado por empresas como Nokia , Motorola , Texas Instruments , Freescale , Tandberg e Intel .

En 2007, la mayoría de los desarrolladores principales de GStreamer abandonaron Fluendo, incluido el mantenedor de GStreamer, Wim Taymans, quien cofundó Collabora Multimedia junto con otros veteranos de GStreamer, mientras que otros se unieron a Sun Microsystems , Oblong Industries y Songbird .

Entre junio de 2012 y agosto de 2014, GStreamer 0.10 también fue distribuido por Collabora y Fluendo como un SDK multiplataforma , [ 23 ] en el sitio web de terceros gstreamer.com (en lugar de gstreamer.freedesktop.org para el proyecto de la comunidad upstream). El objetivo era proporcionar a los desarrolladores de aplicaciones un SDK que fuera funcionalmente idéntico en Windows, Mac OS X , iOS y Android. La iniciativa del SDK tenía como objetivo facilitar la adopción comercial del proyecto GStreamer, ya que proporcionaba un punto de entrada estandarizado para desarrollar aplicaciones multimedia con GStreamer, sin necesidad de construir toda la plataforma por uno mismo. Los usuarios del SDK también se beneficiaron de la documentación Archivado el 16-06-2012 en Wayback Machine , tutoriales e instrucciones específicas para ese SDK.

La serie 1.x

GStreamer 1.0 se lanzó el 24 de septiembre de 2012. [ 24 ] La serie 1.x se puede instalar en paralelo con GStreamer 0.10 para facilitar la transición y ofrece muchas ventajas arquitectónicas sobre la serie 0.10. [ 25 ] En términos generales, GStreamer 1.0 introdujo mejoras significativas para:

  • Los procesadores integrados admiten un menor consumo de energía y descargan el trabajo a unidades de hardware especializadas (como los DSP ).
  • Decodificación/codificación de vídeo acelerada por hardware mediante GPU.
  • Gestión de memoria sin copias (evitando viajes de ida y vuelta innecesarios entre la CPU y la GPU) para un mejor rendimiento y un menor consumo de energía.
  • Tuberías dinámicas
  • Limpieza de API y código

Más allá de las mejoras técnicas, la serie 1.x también se define por un nuevo esquema de versiones. Como explica la hoja de ruta de GStreamer, [ 26 ] todas las versiones 1.xy llevan el sufijo de versión de API -1.0 y tienen una API/ABI estable. La API/ABI solo puede romperse con una nueva serie de versiones principales (es decir, 2.x); sin embargo, actualmente no hay planes para una serie de versiones 2.0. Hasta entonces, el nuevo esquema de numeración de versiones puede usarse para predecir el uso previsto de cada versión. La hoja de ruta cita algunos ejemplos:

  • 1.0.0, 1.0.1, 1.0.2, 1.0.3... versión estable y versiones posteriores con correcciones de errores.
  • 1.1.0, 1.1.1, 1.1.2, 1.1.3... versiones preliminares, versión de desarrollo previa a la 1.2.0
  • 1.2.0, 1.2.1, 1.2.2, 1.2.3... versión estable y versiones posteriores de corrección de errores.
  • 1.3.0...
  • 1.4.0...
  • etc.

En marzo de 2013, los responsables del proyecto GStreamer emitieron un comunicado [ 27 ] para aclarar que la serie 0.10 ya no recibe mantenimiento. El comunicado reafirmó la disposición del proyecto GStreamer a ayudar a los desarrolladores de aplicaciones y complementos a migrar a la nueva tecnología, e insinuó que aquellos para quienes el cambio a la serie 1.x aún se consideraba imposible podían buscar asistencia de diversas empresas de consultoría.

La versión 1.2 añadió compatibilidad con la transmisión adaptativa DASH , imágenes JPEG 2000 , vídeo VP9 y Daala , y compatibilidad solo de decodificación para WebP .

La versión 1.14 se publicó el 19 de marzo de 2018, [ 28 ] añadiendo soporte para WebRTC , AV1 , Nvidia NVDEC y Secure Reliable Transport , entre otros cambios.

La versión 1.22 se lanzó el 23 de enero de 2023, [ 29 ] agregando soporte mejorado para AV1 , además de soporte para HLS , DASH y Microsoft Smooth Streaming para transmisión de tasa de bits adaptativa.

Véase también

  • Lista de software que utiliza GStreamer
  • OggConvert : una interfaz gráfica de usuario sencilla.
  • GNOME SoundConverter : una interfaz gráfica de usuario basada en GStreamer y GTK para la transcodificación de archivos de audio digital.
  • Pitivi : un editor de vídeo basado en GStreamer.

Referencias

  1. 1 2 "GStreamer "Slipstream" 0.1.0 lanzado" . 11 de enero de 2001. Archivado del original el 11 de noviembre de 2012. Recuperado el 3 de noviembre de 2010 .
  2. "GStreamer 1.28.4 versión estable con corrección de errores" . 12 de junio de 2026. Consultado el 13 de junio de 2026 .
  3. "GStreamer" , Resumen del análisis de Ohloh , Ohloh , archivado del original el 26/06/2014 , recuperado el 06/11/2016
  4. 1 2 "¿Cuáles son los términos exactos de la licencia para GStreamer y sus complementos?" . freedesktop.org . Archivado del original el 07-06-2021 . Recuperado el 07-06-2021 .
  5. "Igalia Multimedia" . Archivado del original el 1 de septiembre de 2021. Consultado el 1 de septiembre de 2021 .
  6. "webOS y GStreamer" . Ayuda de webOS. Archivado del original el 22 de marzo de 2009. Consultado el 25 de julio de 2009 .
  7. "GStreamer: Descargar" . gstreamer.freedesktop.org . Archivado del original el 10 de mayo de 2015. Consultado el 15 de mayo de 2015 .
  8. "Página del proyecto GstLAL" . Wiki.ligo.org . Archivado del original el 23 de abril de 2020. Consultado el 6 de mayo de 2019 .
  9. Resumen de los módulos , Gstreamer.freedesktop.org, archivado del original el 25 de enero de 2012 , consultado el 8 de febrero de 2012.
  10. Serie de desarrollo de GStreamer 0.9 - Atrapado por un hilo , Gstreamer.freedesktop.org, archivado del original el 27 de enero de 2013 , recuperado el 24 de febrero de 2013
  11. "GStreamer Buenos complementos" . Archivado del original el 7 de febrero de 2019. Consultado el 5 de febrero de 2019 .
  12. "Complementos defectuosos de GStreamer" . Archivado del original el 7 de febrero de 2019. Consultado el 5 de febrero de 2019 .
  13. "Complementos feos de GStreamer" . Archivado del original el 7 de febrero de 2019. Consultado el 5 de febrero de 2019 .
  14. "subprojects/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab" . GitLab . 24 de septiembre de 2021 . Consultado el 12 de julio de 2022 .
  15. "GStreamer OpenMAX IL wrapper plugin" . gstreamer.freedesktop.org . Archivado del original el 10 de julio de 2017. Consultado el 21 de julio de 2017 .
  16. "Gstreamer 1.0 para raspbian" . GRaspberrypi.org . Archivado del original el 10 de julio de 2017. Consultado el 21 de julio de 2017 .
  17. "Complementos GStreamer para hardware de TI" . Processors.wiki.ti.com . Archivado del original el 28 de junio de 2017. Consultado el 21 de julio de 2017 .
  18. "Fluendo Codec Pack Release 11 trae soporte para VDPAU y VAAPI" . 25/03/2010.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  19. Debian Webmaster. "Debian - Detalles del paquete gstreamer0.10-crystalhd en wheezy" . Packages.debian.org . Archivado del original el 29 de junio de 2017. Consultado el 21 de julio de 2017 .
  20. "subprojects/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab" . GitLab . 16 de enero de 2022 . Consultado el 12 de julio de 2022 .
  21. Edge, Jake (26 de octubre de 2010). "GStreamer: pasado, presente y futuro" . LWN.net . Consultado el 15 de mayo de 2022 .
  22. "GStreamer 0.10.0 versión estable - Anuncio de la primera versión de la serie estable 0.10" . gstreamer.freedesktop.org . Archivado del original el 7 de julio de 2017. Consultado el 21 de julio de 2017 .
  23. "Documentación de GStreamer" . Docs.gstreamer.com . Archivado del original el 28/10/2016 . Consultado el 21/07/2017 .
  24. "GStreamer 1.0 lanzado" . gstreamer.freedesktop.org . Archivado del original el 7 de julio de 2017. Consultado el 21 de julio de 2017 .
  25. "GStreamer 1.0 y 0.10" . Lwn.net . Archivado del original el 13 de junio de 2017. Consultado el 21 de julio de 2017 .
  26. "ReleasePlanning2013 - gstreamer Wiki" . Archivado del original el 15 de agosto de 2013. Consultado el 16 de septiembre de 2013 .
  27. "GStreamer 0.10 ya no recibe mantenimiento" . Lists.freedesktop.org . 11 de marzo de 2013. Archivado del original el 10 de julio de 2017. Consultado el 21 de julio de 2017 .
  28. "Notas de la versión 1.14 de GStreamer" . Archivado del original el 20 de marzo de 2018. Consultado el 8 de septiembre de 2018 .
  29. "Notas de la versión 1.22 de GStreamer" . gstreamer.freedesktop.org . Consultado el 18 de mayo de 2023 .
  • Sitio web oficial
  • Puente Delphi (Encuadernación)
Obtenido de " https://en.wikipedia.org/w/index.php?title=GStreamer&oldid=1360168858 "