GStreamer

редактировать
GStreamer
Gstreamer-logo.svg
Простой конвейер с gst-launch Простой конвейер с gst-launch
Разработчик (и) Команда GStreamer
Первый выпуск11 января 2001 г.; 19 лет назад (2001-01-11)
Стабильный выпуск 1.18.0 (8 сентября 2020 года; 35 дней назад (2020-09-08))
Предварительный выпуск 1.17.90 ( 21 августа 2020 г.; 53 дня назад (2020-08-21)
Репозиторий Измените это в Wikidata
Написано наC
Операционная система BSD, Linux, OpenSolaris, Android, macOS, iOS, Windows, OS / 400
Тип Мультимедийный фреймворк
Лицензия GNU LGPL
Веб-сайтgstreamer.freedesktop.org

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

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

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

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

Содержание
  • 1 Распространение и внедрение
  • 2 Архитектура программного обеспечения
    • 2.1 Языковые привязки
    • 2.2 Обзор
    • 2.3 Plug- ins
      • 2.3.1 Ускорение видео
      • 2.3.2 Форматы мультимедиа
  • 3 История и развитие
    • 3.1 Первые дни
    • 3.2 Серия 0.10
    • 3.3 Серия 1.x
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Распространение и внедрение

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

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

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

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

Архитектура программного обеспечения
Обзор Ядро 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, реализованные в виде разделяемых библиотек. Базовая функциональность GStreamer содержит функции для регистрации и загрузки подключаемых модулей, а также для предоставления основ всех классов в форме базовых классов. Библиотеки подключаемых модулей динамически загружаются для поддержки широкого спектра кодеков , форматов контейнеров, драйверов ввода / вывода и эффектов.

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

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

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

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

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

Ускорение видео

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

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

Форматы мультимедиа

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

История и развитие

Первые дни

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

Первым крупным выпуском была версия 0.1.0, о которой было объявлено 11 января 2001 года. Вскоре после этого 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 году была основана новая компания, которая хотела использовать GStreamer для написания потокового сервера, а также предоставить мультимедийные решения для GStreamer. За это время Fluendo наняла большинство основных разработчиков, включая Вима Таймана, и заручилась поддержкой таких компаний, как Nokia и Intel, чтобы вывести GStreamer на профессиональный уровень и способствовать его принятию сообществом.

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

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

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

В период с июня 2012 г. по август 2014 г. GStreamer 0.10 также распространялся Collabora и в качестве мультиплатформенного SDK на третьем -party 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 г. Серия 1.x может быть установлена ​​параллельно с GStreamer 0.10 для облегчения перехода и обеспечивает множество архитектурных преимуществ по сравнению с 0,10 серии. Вообще говоря, GStreamer 1.0 принес значительные улучшения для:

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

Помимо технических улучшений, Серия 1.x также определяется новой схемой управления версиями. Как объясняется в дорожной карте GStreamer, все версии 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... стабильный выпуск a и последующие выпуски с исправлением ошибок
  • 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 выпустили заявление, поясняющее, что серия 0.10 больше не поддерживается. В заявлении подтверждается готовность проекта GStreamer помочь разработчикам приложений и плагинов перейти на новую технологию и намекнуть, что те, для кого переход на серию 1.x все еще считается невозможным, могут обратиться за помощью к различным консалтинговым компаниям.

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

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

См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
  • Список программного обеспечения, использующего GStreamer
  • Libvisual
  • OggConvert - простой интерфейс с графическим интерфейсом пользователя
  • SoundConverter - интерфейс GUI на основе GStreamer и GTK для перекодирования цифровых аудиофайлов
  • Pitivi - видеоредактор на основе GStreamer
Ссылки
Внешние ссылки
Wikimedia Commons имеет СМИ, относящиеся к GStreamer.
Последняя правка сделана 2021-05-21 09:28:12
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте