Простой конвейер с 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) |
Репозиторий | |
Написано на | 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.
Среда рабочего стола 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 написан на языке программирования 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 .
Существуют различные блоки 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.. Проект также страдал от недостатка руководства, поскольку Вим Тайманс, руководитель проекта после ухода Эрика Валтинсена, в основном прекратил участие.
В 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.
GStreamer 1.0 была выпущена 24 сентября 2012 г. Серия 1.x может быть установлена параллельно с GStreamer 0.10 для облегчения перехода и обеспечивает множество архитектурных преимуществ по сравнению с 0,10 серии. Вообще говоря, GStreamer 1.0 принес значительные улучшения для:
Помимо технических улучшений, Серия 1.x также определяется новой схемой управления версиями. Как объясняется в дорожной карте GStreamer, все версии 1.xy имеют суффикс версии API -1.0 и имеют стабильный API / ABI. API / ABI могут быть нарушены только новая серия основных выпусков (например, 2.x); однако в настоящее время нет планов по выпуску серии выпусков 2.0. До тех пор новая схема нумерации версий может использоваться для прогнозирования предполагаемого использования каждого выпуска. В дорожной карте приводятся некоторые примеры :
В марте 2013 года специалисты по сопровождению проекта GStreamer выпустили заявление, поясняющее, что серия 0.10 больше не поддерживается. В заявлении подтверждается готовность проекта GStreamer помочь разработчикам приложений и плагинов перейти на новую технологию и намекнуть, что те, для кого переход на серию 1.x все еще считается невозможным, могут обратиться за помощью к различным консалтинговым компаниям.
1.2 добавлена поддержка DASH адаптивной потоковой передачи, изображений JPEG2000, VP9 и Daala видео и только декодирование. поддержка WebP.
версии 1.14 была выпущена 19 марта 2018 г., добавлена поддержка WebRTC, AV1, Nvidia NVDEC и Безопасный надежный транспорт, среди прочих изменений.
Wikimedia Commons имеет СМИ, относящиеся к GStreamer. |