GStreamer - GStreamer

GStreamer
Gstreamer-logo.svg
Простой конвейер с gst-launch
Простой конвейер с gst-launch
Разработчики)Команда GStreamer
изначальный выпуск11 января 2001 г.; 19 лет назад (2001-01-11)[1]
Стабильный выпуск1.18.1[2] (26 октября 2020 г.; 31 дней назад (2020-10-26)) [±]
Предварительный выпуск1.17.90[3] (21 августа 2020 г.; 3 месяца назад (2020-08-21)) [±]
Репозиторий Отредактируйте это в Викиданных
Написано вC[4]
Операционная системаBSD, Linux, OpenSolaris, Android, macOS, iOS, Windows, OS / 400
ТипМультимедийный фреймворк
ЛицензияGNU LGPL[5]
Интернет сайтgstreamer.freedesktop.org

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 приложения для его использования. Другие проекты также используют или поддерживают его, например, Фонон медиа-рамки и Певчая птица проигрыватель медиа.

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, Ржавчина, Вала, C ++, Perl, GNU Guile, C # и Рубин.

Обзор

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

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

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

Плагины

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

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

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

Название набора плагиновОписание
ХорошийЭтот пакет содержит плагины GStreamer из «хорошего» набора, набора высококачественных плагинов под лицензией LGPL.[11]
ПлохоПлохие плагины GStreamer включают в себя набор плагинов, не отвечающих требованиям по сравнению с остальными. Они могут близко подходить к качественным плагинам, но им чего-то не хватает: возможно, хорошего обзор кода, некоторая документация, набор тестов, реальный сопровождающий или какое-то реальное широкое использование.[12]
УродливыйЭтот пакет содержит подключаемые модули из «уродливого» набора, набора подключаемых модулей хорошего качества, которые могут создавать проблемы с распространением.[13]

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

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

Видео ускорение

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

Есть разные SIP-блоки которые могут выполнять вычисления для декодирования определенных видеокодеков, таких как PureVideo, УВД, QuickSync видео, TI Ducati и больше. Такие потребности должны быть поддержаны драйвер устройства, который, в свою очередь, предоставляет один или несколько интерфейсы, подобно ВДПАУ, VAAPI, Распределенный движок кодеков или же DXVA программному обеспечению конечного пользователя, такому как MPlayer, для доступа к этому оборудованию и разгрузки на нем вычислений.

Медиа форматы

Плагины Good, Bad и Ugly GStreamer, упомянутые ранее, предоставляют, наряду с элементами обработки / фильтрами всех видов, поддержку широкого спектра форматов файлов, протоколов и мультимедийных кодеков. В дополнение к ним, поддержка более сотни форматов сжатия (в том числе MPEG-1, MPEG-2, MPEG-4, H.261, H.263, H.264, RealVideo, MP3, WMV, так далее.[21][22]) прозрачно предоставляется через подключаемый модуль GStreamer FFmpeg / 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 году и использовался медиаплеерами, включая Тотем, Ритмбокс и Банши и многое другое. Он также был принят такими корпорациями, как Nokia, Motorola, Инструменты Техаса, Freescale, Тандберг, и Intel.

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

В период с июня 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 )
  • Аппаратное ускорение декодирования / кодирования видео с использованием GPU
  • Управление памятью с нулевым копированием (предотвращение ненужных обходов между ЦП и ГП) для повышения производительности и снижения энергопотребления
  • Динамические конвейеры
  • Очистка API и кода

Помимо технических улучшений, серия 1.x также определяется новой схемой управления версиями. Как объясняется в дорожной карте GStreamer,[27] все версии 1.x.y имеют суффикс версии 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 добавлена ​​поддержка БРОСАТЬСЯ адаптивная потоковая передача, JPEG2000 изображений, VP9 и Даала видео и поддержка только декодирования для WebP.

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

Смотрите также

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

Рекомендации

  1. ^ а б "GStreamer" Slipstream "0.1.0 выпущен". 11 января 2001 г.. Получено 3 ноября 2010.
  2. ^ «Примечания к выпуску GStreamer 1.18». Получено 27 октября 2020.
  3. ^ "Предварительная версия GStreamer 1.17.90 (1.18.0 RC1)". Получено 10 сентября 2020.
  4. ^ "GStreamer", Резюме анализа Ohloh, Охлох, получено 2016-11-06
  5. ^ а б «Лицензирование ваших приложений и плагинов для использования с GStreamer». freedesktop.org. Архивировано из оригинал на 2014-06-15. Получено 2014-06-07.
  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 - На волоске, Gstreamer.freedesktop.org, получено 24 февраля 2013
  11. ^ "Хорошие плагины GStreamer".
  12. ^ «Плохие плагины GStreamer».
  13. ^ "Уродливые плагины GStreamer".
  14. ^ Новости, Gstreamer.freedesktop.org, получено 7 февраля 2012
  15. ^ Примечания к выпуску плагина GStreamer FFmpeg 0.7.1 "True Colours", Gstreamer.freedesktop.org, получено 7 февраля 2012
  16. ^ "Плагин оболочки GStreamer OpenMAX IL". gstreamer.freedesktop.org. Получено 2017-07-21.
  17. ^ "Gstreamer 1.0 для распбиана". GRaspberrypi.org. Получено 2017-07-21.
  18. ^ «Плагины GStreamer для оборудования TI». Processors.wiki.ti.com. Получено 2017-07-21.
  19. ^ «Fluendo Codec Pack Release 11 обеспечивает поддержку VDPAU и VAAPI». 2010-03-25. Архивировано из оригинал на 24.06.2014.
  20. ^ Веб-мастер Debian, [email protected]. "Debian - Подробная информация о пакете gstreamer0.10-crystalhd в wheezy". Packages.debian.org. Получено 2017-07-21.
  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. Получено 2017-07-21.
  24. ^ "Документация GStreamer". Docs.gstreamer.com. Получено 2017-07-21.
  25. ^ «Выпущен GStreamer 1.0». gstreamer.freedesktop.org. Получено 2017-07-21.
  26. ^ "GStreamer 1.0 и 0.10". Lwn.net. Получено 2017-07-21.
  27. ^ «Архивная копия». Архивировано из оригинал на 2013-08-15. Получено 2013-09-16.CS1 maint: заархивированная копия как заголовок (связь)
  28. ^ «GStreamer 0.10 больше не поддерживается». Lists.freedesktop.org. Получено 2017-07-21.
  29. ^ https://gstreamer.freedesktop.org/releases/1.14/

внешняя ссылка