stringtranslate.com

Transmisor G

GStreamer es un marco multimedia basado en pipeline 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 manera automática.

GStreamer admite una amplia variedad de componentes de manejo de medios, incluidos la reproducción de audio simple , la reproducción de audio y video, la grabación , la transmisión y la edición. El diseño de la canalización sirve como base para crear muchos tipos de aplicaciones multimedia , como editores de video , transcodificadores , transmisores 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 gratuito 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, incluye GStreamer 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 admiten, como el marco multimedia Phonon y el reproductor multimedia Songbird . También se utiliza en el motor de navegación WebKit . [5]

GStreamer también funciona en dispositivos integrados como el Jolla Phone , el Palm Pre , [6] 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. [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 pipeline .

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 idioma

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

Descripción general

GStreamer procesa los medios conectando una serie de elementos de procesamiento en una canalización . 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 por medio de pads . Un pad de origen en un elemento se puede conectar a un pad receptor 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 receptor. Los pads negocian el tipo de datos que se enviarán utilizando capacidades .

El diagrama de la derecha podría ejemplificar la reproducción de un archivo MP3 utilizando 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 plug-in 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 plug-ins y para proporcionar los fundamentos de todas las clases en forma de clases base . Las bibliotecas de plug-ins se cargan dinámicamente para admitir un amplio espectro de códecs , formatos de contenedor , controladores de entrada/salida y efectos.

Los complementos se pueden instalar de forma semiautomática cuando se los necesita por primera vez. Para ello, las distribuciones pueden registrar un backend que resuelva 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 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, hay un complemento GStreamer FFmpeg (llamado gst-libav por razones históricas [14] ) que amplía la cantidad de formatos multimedia admitidos.

Aceleración de video

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

Existen varios bloques SIP que pueden realizar los cálculos para decodificar ciertos códecs de video, como PureVideo , UVD , QuickSync Video , TI Ducati y más. Estos deben ser compatibles con el controlador del dispositivo , que 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 descargue los cálculos.

Formatos de medios

Los complementos Good, Bad y Ugly de GStreamer mencionados anteriormente proporcionan, junto con 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 días

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 Oregon Graduate Institute . [21] Wim Taymans se unió al proyecto poco después y amplió considerablemente muchos aspectos del sistema. Muchos otros desarrolladores de software han contribuido desde entonces.

El primer lanzamiento importante fue la versión 0.1.0, que se anunció el 11 de enero de 2001. [1] Poco 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 ( de la clase de los teléfonos móviles ). Otro empleado de RidgeRun, Brock A. Frazier, diseñó el logotipo de GStreamer. RidgeRun tuvo problemas financieros más tarde y tuvo que despedir a su personal, incluido Erik Walthinsen. El progreso de GStreamer no se vio afectado en gran medida.

El proyecto lanzó una serie de versiones importantes, 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 cambió su estrategia de control de versiones y, si bien las primeras versiones fueron simplemente nuevas versiones, más adelante el número del medio comenzó a significar series de versiones. Esto significó que el proyecto lanzó una serie de versiones 0.6.x y 0.8.x que debían mantener la compatibilidad binaria dentro de esas series de versiones. Erik Walthinsen prácticamente dejó atrás el desarrollo de GStreamer durante este tiempo y se concentró en otras empresas.

Todas las series de lanzamientos enfrentan dificultades en el proyecto. Ninguna de las series es muy popular en la comunidad Linux, principalmente debido a problemas de estabilidad y una grave falta de características en comparación con proyectos de la competencia como Xine , MPlayer y VLC . El proyecto también sufre una falta de liderazgo, ya que Wim Taymans, el líder del proyecto desde que Erik Walthinsen se fue, 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 llamado 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 por parte 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 primer lanzamiento (0.10.0) en diciembre de 2005. [22] Ha mantenido la compatibilidad con API y ABI desde entonces.

Con un nuevo núcleo estable, GStreamer ganó popularidad en 2006 y lo utilizaron reproductores multimedia como Totem , Rhythmbox y Banshee , a los que siguieron muchos más. También lo adoptaron corporaciones 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 luego 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 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 toda la plataforma por uno mismo. Los usuarios del SDK también se beneficiaron de la documentación Archivado el 16 de junio de 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 a 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 trajo mejoras significativas para:

Más allá de las mejoras técnicas, la serie 1.x también está definida por un nuevo esquema de numeración 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 solo puede romperse con una nueva serie de versiones importantes (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 se puede utilizar para predecir el uso previsto de cada versión. La hoja de ruta cita algunos ejemplos:

En marzo de 2013, los encargados del proyecto GStreamer emitieron una declaración [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 podían buscar ayuda de varias empresas de consultoría.

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

La versión 1.14 se lanzó el 19 de marzo de 2018, [28] agregando 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

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. ^ "Versión estable de corrección de errores de GStreamer 1.24.8". 19 de septiembre de 2024. Consultado el 19 de septiembre 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 2021-06-07 . Consultado el 2021-06-07 .
  5. ^ "Igalia Multimedia". Archivado desde el original el 2021-09-01 . Consultado el 2021-09-01 .
  6. ^ "webOS y GStreamer". webOShelp. 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 de GStreamer 0.9 - Hung by a Thread, Gstreamer.freedesktop.org, archivado desde el original el 27 de enero de 2013 , consultado el 24 de febrero de 2013
  11. ^ "Complementos buenos para GStreamer". Archivado desde el original el 7 de febrero de 2019. Consultado el 5 de febrero de 2019 .
  12. ^ "Complementos defectuosos 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 envolvente IL de GStreamer OpenMAX". 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 TI". Processors.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 incorpora compatibilidad con VDPAU y VAAPI". 25 de marzo de 2010. Archivado desde el original el 24 de junio de 2014.
  19. ^ Webmaster de Debian. «Debian: detalles del paquete gstreamer0.10-crystalhd en wheezy». Packages.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. ^ "Versión estable de GStreamer 0.10.0: anuncio de la primera versión de la serie estable 0.10". gstreamer.freedesktop.org . Archivado desde el original el 2017-07-07 . Consultado el 2017-07-21 .
  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. ^ "GStreamer 1.0 lanzado". gstreamer.freedesktop.org . Archivado desde el original el 2017-07-07 . Consultado el 2017-07-21 .
  25. ^ "GStreamer 1.0 y 0.10". Lwn.net . Archivado desde el original el 2017-06-13 . Consultado el 2017-07-21 .
  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". Lists.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 20 de marzo de 2018. 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