stringtranslate.com

GStreamer

GStreamer es un marco multimedia basado en canalizaciones que vincula una amplia variedad de sistemas de procesamiento de medios para completar flujos de trabajo complejos. Por ejemplo, GStreamer se puede utilizar para crear un sistema que lea archivos en un formato, los procese y los exporte en otro. Los formatos y procesos se pueden cambiar de forma plug and play.

GStreamer admite una amplia variedad de componentes de manejo de medios, incluida la reproducción de audio simple , reproducción de audio y video, grabación , transmisión y edición. El diseño de la tubería sirve como base para crear muchos tipos de aplicaciones multimedia , como editores de vídeo , transcodificadores , emisoras de medios en streaming y reproductores multimedia .

Está diseñado para funcionar en una variedad de sistemas operativos, por ejemplo, BSD , OpenSolaris , Android , macOS , iOS , Windows , OS/400 .

GStreamer es un software gratuito y de código abierto sujeto a los términos de 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, ha incluido GStreamer desde la versión 2.2 de GNOME y anima a las aplicaciones GNOME y GTK a utilizarlo. Otros proyectos también lo utilizan o lo admiten, como el marco de medios Phonon y el reproductor multimedia Songbird . También se utiliza en el motor del navegador WebKit . [5]

GStreamer también opera en dispositivos integrados como Jolla Phone , Palm Pre , [6] Tizen y Nokia 770 , N800 , N810 , N900 y N9 Internet Tablets 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 un oleoducto .

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

Enlaces de idiomas

Una biblioteca escrita en un lenguaje de programación se puede utilizar 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 medios conectando varios elementos de procesamiento en una tubería . Cada elemento es proporcionado por un complemento . Los elementos se pueden agrupar en contenedores , que se pueden agregar aún más, formando así un gráfico jerárquico. Este es un ejemplo de un gráfico de filtro .

Los elementos se comunican mediante pads . Una plataforma fuente en un elemento se puede conectar a una plataforma disipadora en otro. Cuando la canalización está en estado de reproducción , los buffers de datos fluyen desde el pad de origen al pad de sumidero. Los pads negocian el tipo de datos que se enviarán utilizando las capacidades .

El diagrama de la derecha podría ejemplificar la reproducción de un archivo MP3 usando GStreamer. La fuente del archivo lee un archivo MP3 del disco duro de una computadora y lo envía al decodificador de MP3. El decodificador decodifica los datos del archivo y los convierte en muestras PCM que luego pasan al controlador de sonido. El controlador de sonido envía las muestras de sonido PCM a los parlantes de la computadora.

Complementos

GStreamer utiliza una arquitectura de complementos que aprovecha al máximo la funcionalidad de GStreamer implementada como bibliotecas compartidas . [9] La funcionalidad básica de GStreamer contiene funciones para registrar y cargar complementos y para proporcionar los fundamentos de todas las clases en forma de clases base . Las bibliotecas de complementos se cargan dinámicamente para admitir un amplio espectro de códecs , formatos de contenedores , 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 backend que resuelva las descripciones de funciones en nombres de paquetes.

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

Las distribuciones individuales 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, existe un complemento GStreamer FFmpeg (llamado gst-libav por razones históricas [14] ) que amplía la cantidad de formatos multimedia admitidos.

Aceleración de vídeo

A través de complementos especiales proporcionados por Texas Instruments, GStreamer utiliza la aceleración de hardware proporcionada, por ejemplo, por Texas Instruments DaVinci .

Hay varios bloques SIP que pueden realizar cálculos para decodificar ciertos códecs de video, como PureVideo , UVD , QuickSync Video , TI Ducati y más. Esto debe ser compatible con el controlador del dispositivo , que a su vez proporciona una o varias interfaces , como VDPAU , VAAPI , Distributed Codec Engine o DXVA , al software del usuario final como MPlayer para acceder a este hardware y descargarle cálculos.

Formatos de medios

Los complementos Good, Bad and Ugly GStreamer mencionados anteriormente brindan, además de elementos de procesamiento/filtros de todo tipo, soporte para una amplia variedad de formatos de archivos, protocolos y códecs multimedia. Además de ellos, admite 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 días

Erik Walthinsen fundó el proyecto GStreamer en 1999. Muchas de sus ideas de diseño centrales surgieron de un proyecto de investigación en el Oregon Graduate Institute . [21] Wim Taymans se unió al proyecto poco después y amplió enormemente muchos aspectos del sistema. Muchos otros desarrolladores de software han contribuido desde entonces.

La primera versión importante fue la 0.1.0, que se anunció el 11 de enero de 2001. [1] No mucho después, GStreamer consiguió su primer patrocinador comercial. Hacia finales de enero de 2001, contrataron a Erik Walthinsen para desarrollar métodos para integrar GStreamer en dispositivos más pequeños ( tipo teléfono móvil ). Otro empleado de RidgeRun, Brock A. Frazier, diseñó el logotipo de GStreamer. Más tarde, RidgeRun tuvo problemas económicos y tuvo que despedir a su personal, incluido Erik Walthinsen. El progreso de GStreamer prácticamente no se vio afectado.

El proyecto lanzó una serie de versiones importantes: 0.2.0 en julio de 2001, 0.4.0 en septiembre de 2002 y 0.8.0 en marzo de 2004. Durante ese período, el proyecto también cambió su estrategia de versiones y, aunque las primeras versiones fueron simplemente nuevas versiones, más tarde el número del medio comenzó a significar series de lanzamiento. Esto significó que el proyecto lanzó una serie de versiones 0.6.x y 0.8.x que debían seguir siendo compatibles binariamente dentro de esas series de versiones. Erik Walthinsen dejó más o menos atrás el desarrollo de GStreamer durante este tiempo y se centró en otras empresas.

En todas las series de lanzamiento, el proyecto enfrenta dificultades. Todas las series no son muy populares en la comunidad Linux principalmente debido a problemas de estabilidad y una grave falta de funciones en comparación con proyectos de la competencia como Xine , MPlayer y VLC . El proyecto también adolece de una falta de liderazgo, ya que Wim Taymans, el líder del proyecto desde que Erik Walthinsen se fue, había dejado de participar en gran medida.

La serie 0,10

En 2004, se fundó una nueva empresa, Fluendo, que quería utilizar GStreamer para escribir 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 la adopción de la comunidad.

Con Wim Taymans nuevamente al mando, el núcleo de GStreamer fue rediseñado y se convirtió en lo que es la actual serie 0.10.x, que tuvo su primera versión (0.10.0) en diciembre de 2005. [22] Ha mantenido la compatibilidad 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 lo seguirán. También fue adoptado por corporaciones como Nokia , Motorola , Texas Instruments , Freescale , Tandberg e Intel .

En 2007, la mayoría de los principales desarrolladores 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, Collabora y Fluendo también distribuyeron GStreamer 0.10 como un SDK multiplataforma , [23] en el sitio web de terceros gstreamer.com (en lugar de gstreamer.freedesktop.org para el proyecto comunitario 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 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 la plataforma completa por uno mismo. Los usuarios del SDK también se beneficiaron de documentación archivada el 16 de junio de 2012 en Wayback Machine , tutoriales e instrucciones específicas de 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 a GStreamer 0.10 para facilitar la transición y proporciona muchas ventajas arquitectónicas sobre la serie 0.10. [25] En términos generales, GStreamer 1.0 trajo mejoras significativas para:

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 un sufijo de versión API -1.0 y tienen una API/ABI estable. La API/ABI sólo puede interrumpirse mediante una nueva serie de versiones principales (es decir, 2.x); sin embargo, actualmente no hay planes para una serie de lanzamientos 2.0. Hasta entonces, el nuevo esquema de numeración de versiones se puede utilizar para predecir el uso previsto de cada versión. La hoja de ruta cita algunos ejemplos:

En marzo de 2013, los mantenedores del proyecto GStreamer emitieron un comunicado [27] para aclarar que la serie 0.10 ya no se mantiene. La declaración reafirmó la voluntad del proyecto GStreamer de 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 todavía se consideraba imposible podrían buscar ayuda de varias empresas consultoras.

1.2 agregó soporte para transmisión adaptativa DASH , imágenes JPEG 2000 , video VP9 y Daala , y soporte solo de decodificación para WebP .

La versión 1.14 se lanzó el 19 de marzo de 2018 y agregó 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 velocidad de bits adaptativa.

Ver también

Referencias

  1. ^ ab "GStreamer" Slipstream "0.1.0 lanzado". 11 de enero de 2001. Archivado desde el original el 11 de noviembre de 2012 . Consultado el 3 de noviembre de 2010 .
  2. ^ "Lanzamiento estable de corrección de errores de GStreamer 1.22.10". 13 de febrero de 2024 . Consultado el 15 de febrero de 2024 .
  3. ^ "GStreamer", Resumen del análisis de Ohloh , Ohloh , archivado desde el original el 26 de junio de 2014 , consultado el 6 de noviembre de 2016
  4. ^ ab "¿Cuáles son los términos exactos de la licencia para GStreamer y sus complementos?". freedesktop.org . Archivado desde el original el 7 de junio de 2021 . Consultado el 7 de junio de 2021 .
  5. ^ "Igalia Multimedia". Archivado desde el original el 1 de septiembre de 2021 . Consultado el 1 de septiembre de 2021 .
  6. ^ "webOS y GStreamer". ayuda webOS. Archivado desde el original el 22 de marzo de 2009 . Consultado el 25 de julio de 2009 .
  7. ^ "GStreamer: Descargar". gstreamer.freedesktop.org . Archivado desde el original el 10 de mayo de 2015 . Consultado el 15 de mayo de 2015 .
  8. ^ "Página del proyecto GstLAL". Wiki.ligo.org . Archivado desde el original el 23 de abril de 2020 . Consultado el 6 de mayo de 2019 .
  9. ^ Descripción general de los módulos, Gstreamer.freedesktop.org, archivado desde el original el 25 de enero de 2012 , consultado el 8 de febrero de 2012
  10. ^ Serie de desarrollo GStreamer 0.9: colgado de un hilo, Gstreamer.freedesktop.org, archivado desde el original el 27 de enero de 2013 , recuperado 24 de febrero de 2013
  11. ^ "Buenos complementos de GStreamer". Archivado desde el original el 7 de febrero de 2019 . Consultado el 5 de febrero de 2019 .
  12. ^ "Complementos incorrectos de GStreamer". Archivado desde el original el 7 de febrero de 2019 . Consultado el 5 de febrero de 2019 .
  13. ^ "Complementos feos de GStreamer". Archivado desde el original el 7 de febrero de 2019 . Consultado el 5 de febrero de 2019 .
  14. ^ "subproyectos/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab". GitLab . Consultado el 12 de julio de 2022 .
  15. ^ "Complemento contenedor GStreamer OpenMAX IL". gstreamer.freedesktop.org . Archivado desde el original el 10 de julio de 2017 . Consultado el 21 de julio de 2017 .
  16. ^ "Gstreamer 1.0 para raspbian". GRAspberrypi.org . Archivado desde el original el 10 de julio de 2017 . Consultado el 21 de julio de 2017 .
  17. ^ "Complementos GStreamer para hardware de TI". Procesadores.wiki.ti.com . Archivado desde el original el 28 de junio de 2017 . Consultado el 21 de julio de 2017 .
  18. ^ "Fluendo Codec Pack Release 11 ofrece compatibilidad con VDPAU y VAAPI". 2010-03-25. Archivado desde el original el 24 de junio de 2014.
  19. ^ Webmaster de Debian. "Debian - Detalles del paquete gstreamer0.10-crystalhd en wheezy". Paquetes.debian.org . Archivado desde el original el 29 de junio de 2017 . Consultado el 21 de julio de 2017 .
  20. ^ "subproyectos/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab". GitLab . 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. ^ "Lanzamiento estable de GStreamer 0.10.0: anuncio del primer lanzamiento de la serie estable 0.10". gstreamer.freedesktop.org . Archivado desde el original el 7 de julio de 2017 . Consultado el 21 de julio de 2017 .
  23. ^ "Documentación de GStreamer". Docs.gstreamer.com . Archivado desde el original el 28 de octubre de 2016 . Consultado el 21 de julio de 2017 .
  24. ^ "Lanzamiento de GStreamer 1.0". gstreamer.freedesktop.org . Archivado desde el original el 7 de julio de 2017 . Consultado el 21 de julio de 2017 .
  25. ^ "GStreamer 1.0 y 0.10". Lwn.net . Archivado desde el original el 13 de junio de 2017 . Consultado el 21 de julio de 2017 .
  26. ^ "ReleasePlanning2013 - Wiki de gstreamer". Archivado desde el original el 15 de agosto de 2013 . Consultado el 16 de septiembre de 2013 .
  27. ^ "GStreamer 0.10 ya no se mantiene". Listas.freedesktop.org . 11 de marzo de 2013. Archivado desde el original el 10 de julio de 2017 . Consultado el 21 de julio de 2017 .
  28. ^ "Notas de la versión de GStreamer 1.14". Archivado desde el original el 2018-03-20 . Consultado el 8 de septiembre de 2018 .
  29. ^ "Notas de la versión de GStreamer 1.22". gstreamer.freedesktop.org . Consultado el 18 de mayo de 2023 .

enlaces externos