Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

GStreamer - это основанная на конвейере мультимедийная структура, которая связывает воедино широкий спектр систем обработки мультимедиа для выполнения сложных рабочих процессов. Например, GStreamer можно использовать для создания системы, которая считывает файлы в одном формате, обрабатывает их и экспортирует в другом. Форматы и процессы могут быть изменены в режиме plug and play.

GStreamer поддерживает широкий спектр компонентов обработки мультимедиа, включая простое воспроизведение звука, воспроизведение аудио и видео, запись , потоковую передачу и редактирование. Конструкция конвейера служит основой для создания многих типов мультимедийных приложений, таких как видеоредакторы , транскодеры , потоковые медиа-вещатели и медиаплееры .

Он разработан для работы с различными операционными системами, например, с операционными системами на основе ядра Linux , BSD , OpenSolaris , Android , macOS , iOS , Windows , OS / 400 .

GStreamer - бесплатное программное обеспечение с открытым исходным кодом в соответствии с условиями Стандартной общественной лицензии ограниченного применения GNU (LGPL) [5] и размещается на сайте freedesktop.org .

Распространение и принятие [ править ]

Среда рабочего стола GNOME , интенсивно использующая GStreamer, включает GStreamer начиная с GNOME версии 2.2 и поощряет использование приложений GNOME и GTK . Другие проекты также используют или поддерживают его, например, медиа-фреймворк Phonon и медиаплеер Songbird .

GStreamer также работает во встроенных устройствах, таких как Jolla Phone , Palm Pre , [6] Tizen и Интернет-планшеты Nokia 770 , N800 , N810 , N900 и N9, работающие под управлением операционной системы Maemo .

Помимо выпусков исходного кода, проект GStreamer предоставляет двоичные сборки для Android, iOS, OSX и Windows. [7]

LIGO Воспользоваться Лаборатория GStreamer для моделирования и анализа данных гравитационных волн. Интерфейс GStreamer называется GstLAL.[8]

Архитектура программного обеспечения [ править ]

Обзор
Ядро GStreamer с тремя различными типами плагинов.
GStreamer - это конвейер .

GStreamer написан на языке программирования C с системой типов, основанной на GObject и объектной модели GLib 2.0.

Привязки языков [ править ]

Библиотека, написанная на одном языке программирования, может использоваться на другом языке, если написаны привязки ; GStreamer имеет ряд привязок для различных языков, таких как Python , Rust , Vala , C ++ , Perl , GNU Guile , C # и Ruby .

Обзор [ править ]

GStreamer обрабатывает мультимедиа, соединяя ряд обрабатывающих элементов в конвейер . Каждый элемент предоставляется плагином . Элементы могут быть сгруппированы в бункеры , которые затем могут быть агрегированы, образуя иерархический граф. Это пример графа фильтра .

Элементы связываются с помощью контактных площадок . Подушка источника на одном элементе может быть соединена с подушкой раковины на другом. Когда конвейер находится в состоянии воспроизведения , буферы данных перетекают от панели источника к панели приемника. Пэды согласовывают тип данных, которые будут отправлены с использованием возможностей .

На диаграмме справа может быть показан пример воспроизведения файла MP3 с помощью GStreamer. Источник файла считывает файл MP3 с жесткого диска компьютера и отправляет его в декодер MP3. Декодер декодирует данные файла и преобразует их в образцы PCM, которые затем передаются звуковому драйверу ALSA . Звуковой драйвер ALSA отправляет образцы звука PCM на динамики компьютера.

Плагины [ править ]

GStreamer использует архитектуру подключаемых модулей, которая максимально использует функциональные возможности GStreamer, реализованные в виде общих библиотек . [9] Базовая функциональность GStreamer содержит функции для регистрации и загрузки плагинов, а также для предоставления основ всех классов в форме базовых классов . Библиотеки подключаемых модулей динамически загружаются для поддержки широкого спектра кодеков , форматов контейнеров , драйверов ввода / вывода и эффектов.

Плагины можно установить полуавтоматически, когда они впервые понадобятся. Для этой цели дистрибутивы могут зарегистрировать бэкэнд, который преобразует описания функций в имена пакетов.

Начиная с версии 0.9, плагины сгруппированы в три набора (названных в честь фильма «Хороший, плохой и злой» ). [10]

Отдельные дистрибутивы могут дополнительно подклассифицировать эти плагины: например, Ubuntu группирует «плохие» и «уродливые» наборы в компоненты «Вселенная» или «Мультивселенная» .

Также существует отдельный подключаемый модуль GStreamer FFmpeg , который представляет собой подключаемый модуль на основе FFmpeg, который поддерживает множество дополнительных медиаформатов. Впервые он был выпущен 26 февраля 2004 года с номером версии 0.7.1. [14] [15] Он может прозрачно использовать Libav , и поэтому его часто называют подключаемым модулем GStreamer Libav в последних дистрибутивах Linux.

Ускорение видео [ править ]

Через специальные плагины, предоставляемые Texas Instruments, GStreamer использует аппаратное ускорение, предоставляемое, например, Texas Instruments DaVinci .

Существуют различные блоки SIP, которые могут выполнять вычисления для декодирования определенных видеокодеков, например PureVideo , UVD , QuickSync Video , TI Ducati и других. Это должно поддерживаться драйвером устройства , который, в свою очередь, предоставляет один или несколько интерфейсов , таких как VDPAU , VAAPI , Distributed Codec Engine или DXVA, для программного обеспечения конечного пользователя, такого как MPlayer, для доступа к этому оборудованию и разгрузки вычислений на нем.

  • Можно использовать механизм кодирования видео с GStreamer через подключаемый модуль- оболочку OpenMAX IL gst-omx . [16] Это возможно, например, на Raspberry Pi . [17]
  • Ядро SIP присутствует на некоторых Texas Instruments SoCs также доступна через GStreamer: GST-DMAI , GST-OpenMAX , GST-дсп . [18]
  • VDPAU и VAAPI поддерживаются GNOME Videos > = 2.28.0 и GStreamer> = 0.10.26 с 2010 г. [19]
  • Поддерживается Broadcom Crystal HD [20]

Форматы мультимедиа [ править ]

Упомянутые ранее плагины Good, Bad и Ugly GStreamer, наряду с элементами обработки / фильтрами всех видов, поддерживают широкий спектр форматов файлов, протоколов и мультимедийных кодеков. В дополнение к ним, поддержка более сотни форматов сжатия (включая MPEG-1 , MPEG-2 , MPEG-4 , H.261 , H.263 , H.264 , RealVideo , MP3 , WMV и т. Д. [21]) [22] ) прозрачно предоставляется через подключаемый модуль GStreamer FFmpeg / libav. См. Libav и FFmpeg на страницах с полным списком медиаформатов, предоставляемых этими надстройками.

История и развитие [ править ]

Ранние дни [ править ]

Эрик Валтинсен основал проект GStreamer в 1999 году. Многие из его основных дизайнерских идей были получены в результате исследовательского проекта в Орегонском аспирантуре . [ необходима цитата ] Вим Тайманс присоединился к проекту вскоре после этого и значительно расширил многие аспекты системы. С тех пор много других разработчиков программного обеспечения внесли свой вклад.

Первым крупным выпуском была версия 0.1.0, о которой было объявлено 11 января 2001 года. [1] Вскоре после этого GStreamer приобрела своего первого коммерческого спонсора, компанию по встроенному Linux под названием RidgeRun. В конце января 2001 года они наняли Эрика Валтинсена для разработки методов встраивания GStreamer в устройства меньшего размера ( класса сотовых телефонов ). Другой сотрудник RidgeRun, Брок А. Фрейзер, разработал логотип GStreamer. Позже RidgeRun столкнулся с финансовыми трудностями, и ему пришлось уволить своих сотрудников, в том числе Эрика Валтинсена. Прогресс GStreamer практически не изменился.

Проект выпустил серию основных выпусков: 0.2.0 в июле 2001 г., 0.4.0 в сентябре 2002 г. и 0.8.0 в марте 2004 г. В течение этого периода проект также изменил свою стратегию управления версиями, и в то время как первые выпуски были просто новые версии, позже средний номер стал обозначать серию выпуска. Это означало, что проект действительно выпустил ряд выпусков 0.6.x и 0.8.x, которые должны были оставаться бинарно совместимыми в рамках этих выпусков. Эрик Валтинсен в это время более или менее оставил разработку GStreamer позади, сосредоточившись на других проектах.

Во время выпуска 0.8.x проект столкнулся с трудностями. Серия 0.8.x не пользовалась большой популярностью в сообществе Linux в основном из-за проблем со стабильностью и серьезного отсутствия функций по сравнению с конкурирующими проектами, такими как Xine , MPlayer и VLC . Проект также страдал от недостатка руководства, поскольку Вим Тайманс, руководитель проекта после ухода Эрика Валтинсена, в основном прекратил участие.

Серия 0.10 [ править ]

В 2004 году была основана новая компания Fluendo , которая хотела использовать GStreamer для написания потокового сервера Flumotion, а также предоставить мультимедийные решения для GStreamer. За это время Fluendo наняла большинство основных разработчиков, включая Вима Таймана, и заручилась поддержкой таких компаний, как Nokia и Intel, чтобы вывести GStreamer на профессиональный уровень и способствовать его принятию сообществом.

С Вимом Таймансом, снова у руля, ядро ​​GStreamer было переработано и превратилось в текущую серию 0.10.x, первая версия которой (0.10.0) вышла в декабре 2005 года. [23] С тех пор она поддерживает API и совместимость с ABI. .

Благодаря новому стабильному ядру, GStreamer приобрел популярность в 2006 году и использовался медиаплеерами, включая Totem , Rhythmbox и Banshee, а также многие другие. Он также был принят такими корпорациями, как Nokia , Motorola , Texas Instruments , Freescale , Tandberg и Intel .

В 2007 году большинство основных разработчиков GStreamer покинули Fluendo, в том числе сопровождающий GStreamer Вим Тайманс, который вместе с другими ветеранами GStreamer стал соучредителем Collabora Multimedia , а другие присоединились к Sun Microsystems , Oblong Industries и Songbird .

В период с июня 2012 по август 2014 года, GStreamer 0,10 был также распространен Collabora и Fluendo как мультиплатформенной SDK , [24] на третьей стороне gstreamer.com сайта (а не gstreamer.freedesktop.org для проекта вверх по течению сообщества). Цель заключалась в том, чтобы предоставить разработчикам приложений SDK, который был бы функционально идентичен в Windows, Mac OS X, iOS, Android и все поддерживаемые платформы Linux. Инициатива SDK была направлена ​​на облегчение коммерческого внедрения проекта GStreamer, поскольку он предоставил стандартизированную точку входа для разработки мультимедийных приложений с помощью GStreamer, без необходимости самостоятельно создавать всю платформу. Пользователи SDK также извлекли пользу из документации , руководств и инструкций, относящихся к этому SDK.

Серия 1.x [ править ]

GStreamer 1.0 был выпущен 24 сентября 2012 года. [25] Серия 1.x может быть установлена ​​параллельно с GStreamer 0.10 для облегчения перехода и обеспечивает множество архитектурных преимуществ по сравнению с серией 0.10. [26] В целом GStreamer 1.0 внес значительные улучшения для:

  • Поддержка встроенных процессоров, более низкое энергопотребление, передача работы специализированным аппаратным модулям (например, DSP )
  • Аппаратное ускорение декодирования / кодирования видео с использованием графических процессоров
  • Управление памятью с нулевым копированием (предотвращение ненужных обходов между ЦП и ГП) для повышения производительности и снижения энергопотребления
  • Динамические конвейеры
  • Очистка API и кода

Помимо технических улучшений, серия 1.x также определяется новой схемой управления версиями. Как объясняется в дорожной карте GStreamer [27], все версии 1.xy несут суффикс версии API -1.0 и имеют стабильный API / ABI. API / ABI может быть нарушен только в новой серии основных выпусков (например, 2.x); однако в настоящее время нет планов по выпуску серии 2.0. А пока новую схему нумерации версий можно использовать для прогнозирования предполагаемого использования каждого выпуска. В дорожной карте приводится несколько примеров:

  • 1.0.0, 1.0.1, 1.0.2, 1.0.3 ... стабильный выпуск и последующие выпуски с исправлениями ошибок
  • 1.1.0, 1.1.1, 1.1.2, 1.1.3 ... предварительные выпуски, разрабатываемая версия до 1.2.0
  • 1.2.0, 1.2.1, 1.2.2, 1.2.3 ... стабильный выпуск и последующие выпуски с исправлениями ошибок
  • 1.3.0 ...
  • 1.4.0 ...
  • и т.п.

В марте 2013 года специалисты по сопровождению проекта GStreamer опубликовали заявление [28], поясняющее, что серия 0.10 больше не поддерживается. В заявлении подтверждается готовность проекта GStreamer помочь разработчикам приложений и плагинов перейти на новую технологию и намекнуть, что те, для кого переход на серию 1.x по-прежнему считается невозможным, могут обратиться за помощью к различным консалтинговым компаниям.

1.2 добавлена ​​поддержка адаптивной потоковой передачи DASH , изображений JPEG2000 , видео VP9 и Daala , а также поддержка только декодирования для WebP .

Версия 1.14 была выпущена 19 марта 2018 года [29], добавив , среди прочего, поддержку WebRTC , AV1 , Nvidia NVDEC и Secure Reliable Transport .

См. Также [ править ]

  • Список программного обеспечения, использующего GStreamer
  • Libvisual
  • OggConvert - простой интерфейс с графическим интерфейсом
  • SoundConverter - интерфейс с графическим интерфейсом на основе GStreamer и GTK для транскодирования цифровых аудиофайлов.
  • Pitivi - видеоредактор на основе GStreamer

Ссылки [ править ]

  1. ^ a b "GStreamer" Slipstream "0.1.0 выпущен" . 11 января 2001 . Проверено 3 ноября 2010 года .
  2. ^ «Примечания к выпуску GStreamer 1.18» . Проверено 14 января 2021 года .
  3. ^ "Предварительный выпуск GStreamer 1.17.90 (1.18.0 RC1)" . Проверено 10 сентября 2020 .
  4. ^ "GStreamer", Ohloh Analysis Summary , Ohloh , получено 6 ноября 2016 г.
  5. ^ a b «Лицензирование ваших приложений и плагинов для использования с GStreamer» . freedesktop.org . Архивировано из оригинала на 2014-06-15 . Проверено 7 июня 2014 .
  6. ^ "WebOS и GStreamer" . webOShelp. Архивировано из оригинального 22 марта 2009 года . Проверено 25 июля 2009 года .
  7. ^ "GStreamer: Загрузить" . gstreamer.freedesktop.org . Дата обращения 15 мая 2015 .
  8. ^ "Страница проекта GstLAL" . Wiki.ligo.org . Дата обращения 6 мая 2019 .
  9. ^ Обзор модулей , Gstreamer.freedesktop.org , получено 8 февраля 2012 г.
  10. ^ Серия разработок GStreamer 0.9 - Hung by a Thread , Gstreamer.freedesktop.org , получено 24 февраля 2013 г.
  11. ^ "Хорошие плагины GStreamer" .
  12. ^ "Плохие плагины GStreamer" .
  13. ^ "Уродливые плагины GStreamer" .
  14. ^ Новости , Gstreamer.freedesktop.org , получено 7 февраля 2012 г.
  15. ^ Примечания к выпуску плагина GStreamer FFmpeg 0.7.1 "True Colors" , Gstreamer.freedesktop.org , получено 7 февраля 2012 г.
  16. ^ "Плагин-оболочка GStreamer OpenMAX IL" . gstreamer.freedesktop.org . Проверено 21 июля 2017 .
  17. ^ "Gstreamer 1.0 для raspbian" . GRaspberrypi.org . Проверено 21 июля 2017 .
  18. ^ "Плагины GStreamer для оборудования TI" . Processors.wiki.ti.com . Проверено 21 июля 2017 .
  19. ^ «Fluendo Codec Pack Release 11 обеспечивает поддержку VDPAU и VAAPI» . 2010-03-25. Архивировано из оригинала на 2014-06-24.
  20. ^ Веб-мастер Debian, [email protected]. «Debian - Подробная информация о пакете gstreamer0.10-crystalhd в wheezy» . Packages.debian.org . Проверено 21 июля 2017 .
  21. ^ Подключаемый модуль FFmpeg , Gstreamer.freedesktop.org , получено 7 февраля 2012 г.
  22. ^ ext / ffmpeg / gstffmpegcodecmap.c , Cgit.freedesktop.org , получено 7 февраля 2012 г.
  23. ^ "Стабильный выпуск GStreamer 0.10.0 - Объявление о первом выпуске в стабильной серии 0.10" . gstreamer.freedesktop.org . Проверено 21 июля 2017 .
  24. ^ "Документация GStreamer" . Docs.gstreamer.com . Проверено 21 июля 2017 .
  25. ^ "Выпущен GStreamer 1.0" . gstreamer.freedesktop.org . Проверено 21 июля 2017 .
  26. ^ "GStreamer 1.0 и 0.10" . Lwn.net . Проверено 21 июля 2017 .
  27. ^ "Архивная копия" . Архивировано из оригинала на 2013-08-15 . Проверено 16 сентября 2013 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  28. ^ "GStreamer 0.10 больше не поддерживается" . Lists.freedesktop.org . Проверено 21 июля 2017 .
  29. ^ https://gstreamer.freedesktop.org/releases/1.14/

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Веб-сайт для GStreamer SDK
  • Проект GStreamer на Ohloh
  • #gstreamer подключиться к freenode
  • Веб-сайт подключаемого модуля GStreamer FFmpeg
  • Пакеты двоичного установщика Windows
  • Пакеты двоичного установщика Mac OS X
  • Delphi Bridge (привязка)