GStreamer - GStreamer
Простой конвейер с gst-launch | |
Разработчики) | Команда GStreamer |
---|---|
изначальный выпуск | 11 января 2001 г.[1] |
Стабильный выпуск | 1.18.1[2] (26 октября 2020 г. ) [±] |
Предварительный выпуск | 1.17.90[3] (21 августа 2020 г. ) [±] |
Репозиторий | |
Написано в | C[4] |
Операционная система | BSD, Linux, OpenSolaris, Android, macOS, iOS, Windows, OS / 400 |
Тип | Мультимедийный фреймворк |
Лицензия | GNU LGPL[5] |
Интернет сайт | gstreamer |
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 написан в Язык программирования 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.
Видео ускорение
Есть разные SIP-блоки которые могут выполнять вычисления для декодирования определенных видеокодеков, таких как PureVideo, УВД, QuickSync видео, TI Ducati и больше. Такие потребности должны быть поддержаны драйвер устройства, который, в свою очередь, предоставляет один или несколько интерфейсы, подобно ВДПАУ, VAAPI, Распределенный движок кодеков или же DXVA программному обеспечению конечного пользователя, такому как MPlayer, для доступа к этому оборудованию и разгрузки на нем вычислений.
- Можно использовать Механизм кодирования видео с GStreamer через OpenMAX IL плагин-оболочка gst-omx.[16] Это возможно, например, на Raspberry Pi.[17]
- В SIP ядро присутствует на некоторых Инструменты Техаса SoC также доступны через GStreamer: gst-dmai, gst-openmax, gst-dsp.[18]
- ВДПАУ и VAAPI поддерживаются Видео GNOME > = 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. Увидеть Либав и 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
Рекомендации
- ^ а б "GStreamer" Slipstream "0.1.0 выпущен". 11 января 2001 г.. Получено 3 ноября 2010.
- ^ «Примечания к выпуску GStreamer 1.18». Получено 27 октября 2020.
- ^ "Предварительная версия GStreamer 1.17.90 (1.18.0 RC1)". Получено 10 сентября 2020.
- ^ "GStreamer", Резюме анализа Ohloh, Охлох, получено 2016-11-06
- ^ а б «Лицензирование ваших приложений и плагинов для использования с GStreamer». freedesktop.org. Архивировано из оригинал на 2014-06-15. Получено 2014-06-07.
- ^ «WebOS и GStreamer». webOShelp. Архивировано из оригинал 22 марта 2009 г.. Получено 25 июля 2009.
- ^ "GStreamer: Загрузить". gstreamer.freedesktop.org. Получено 15 мая 2015.
- ^ "Страница проекта GstLAL". Wiki.ligo.org. Получено 6 мая 2019.
- ^ Обзор модулей, Gstreamer.freedesktop.org, получено 8 февраля 2012
- ^ Серия разработок GStreamer 0.9 - На волоске, Gstreamer.freedesktop.org, получено 24 февраля 2013
- ^ "Хорошие плагины GStreamer".
- ^ «Плохие плагины GStreamer».
- ^ "Уродливые плагины GStreamer".
- ^ Новости, Gstreamer.freedesktop.org, получено 7 февраля 2012
- ^ Примечания к выпуску плагина GStreamer FFmpeg 0.7.1 "True Colours", Gstreamer.freedesktop.org, получено 7 февраля 2012
- ^ "Плагин оболочки GStreamer OpenMAX IL". gstreamer.freedesktop.org. Получено 2017-07-21.
- ^ "Gstreamer 1.0 для распбиана". GRaspberrypi.org. Получено 2017-07-21.
- ^ «Плагины GStreamer для оборудования TI». Processors.wiki.ti.com. Получено 2017-07-21.
- ^ «Fluendo Codec Pack Release 11 обеспечивает поддержку VDPAU и VAAPI». 2010-03-25. Архивировано из оригинал на 24.06.2014.
- ^ Веб-мастер Debian, [email protected]. "Debian - Подробная информация о пакете gstreamer0.10-crystalhd в wheezy". Packages.debian.org. Получено 2017-07-21.
- ^ Плагин FFmpeg, Gstreamer.freedesktop.org, получено 7 февраля 2012
- ^ ext / ffmpeg / gstffmpegcodecmap.c, Cgit.freedesktop.org, получено 7 февраля 2012
- ^ "Стабильный выпуск GStreamer 0.10.0 - Объявление о первом выпуске в стабильной серии 0.10". gstreamer.freedesktop.org. Получено 2017-07-21.
- ^ "Документация GStreamer". Docs.gstreamer.com. Получено 2017-07-21.
- ^ «Выпущен GStreamer 1.0». gstreamer.freedesktop.org. Получено 2017-07-21.
- ^ "GStreamer 1.0 и 0.10". Lwn.net. Получено 2017-07-21.
- ^ «Архивная копия». Архивировано из оригинал на 2013-08-15. Получено 2013-09-16.CS1 maint: заархивированная копия как заголовок (связь)
- ^ «GStreamer 0.10 больше не поддерживается». Lists.freedesktop.org. Получено 2017-07-21.
- ^ https://gstreamer.freedesktop.org/releases/1.14/