GStreamer
Разработчик(и) | Команда GStreamer |
---|---|
Первоначальный выпуск | 11 января 2001 г [ 1 ] |
Стабильная версия | 1.24.6 [ 2 ]
/ 29 июля 2024 г. |
Репозиторий | |
Написано в | С [ 3 ] |
Операционная система | BSD , OpenSolaris , Linux , Android , macOS , iOS , Windows , OS/400 |
Тип | Мультимедийная структура |
Лицензия | LGPL-2.1 или более поздняя версия [ 4 ] |
Веб-сайт | gstreamer |
GStreamer — это конвейера на основе мультимедийная платформа , которая объединяет широкий спектр систем обработки мультимедиа для выполнения сложных рабочих процессов. Например, GStreamer можно использовать для создания системы, которая читает файлы в одном формате, обрабатывает их и экспортирует в другом. Форматы и процессы могут быть изменены автоматически.
GStreamer поддерживает широкий спектр компонентов обработки мультимедиа, включая простое воспроизведение звука , воспроизведение аудио и видео, запись , потоковую передачу и редактирование. Конструкция конвейера служит основой для создания многих типов мультимедийных приложений, таких как видеоредакторы , транскодеры , потоковые медиавещатели и медиаплееры .
Он предназначен для работы в различных операционных системах, например, BSD , OpenSolaris , Linux , Android , macOS , iOS , Windows , OS/400 .
GStreamer — это бесплатное программное обеспечение с открытым исходным кодом, подпадающее под условия LGPL-2.1 или более поздней версии. [ 4 ] и размещается на сайте freedesktop.org .
Распространение и принятие
[ редактировать ]Среда рабочего стола GNOME , активно использующая GStreamer, включает GStreamer начиная с версии GNOME 2.2 и поощряет GNOME и GTK его использование приложениями . Другие проекты также используют или поддерживают его, например, медиа-фреймворк Phonon и Songbird медиаплеер . Он также используется в движке браузера WebKit . [ 5 ]
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 имеет ряд привязок для различных языков, таких как Go , Python , Rust , Vala , C++ , Perl , GNU Guile , C# и Ruby .
Обзор
[ редактировать ]GStreamer обрабатывает медиа, соединяя ряд обрабатывающих элементов в конвейер . Каждый элемент предоставляется плагином . Элементы можно группировать в ячейки , которые в дальнейшем можно агрегировать, образуя иерархический граф. Это пример графа фильтра .
Элементы общаются посредством колодок . Площадка источника на одном элементе может быть подключена к площадке приемника на другом. Когда конвейер находится в состоянии воспроизведения , буферы данных передаются с исходной площадки на приемную площадку. Контактные площадки согласовывают тип данных, которые будут отправлены с использованием возможностей .
Диаграмма справа может иллюстрировать воспроизведение файла MP3 с помощью GStreamer. Источник файла считывает файл MP3 с жесткого диска компьютера и отправляет его в декодер MP3. Декодер декодирует данные файла и преобразует их в семплы PCM , которые затем передаются звуковому драйверу. Звуковой драйвер отправляет образцы звука PCM на динамики компьютера.
Плагины
[ редактировать ]GStreamer использует архитектуру подключаемых модулей , которая позволяет максимально эффективно использовать функциональные возможности GStreamer, реализованные в виде общих библиотек . [ 9 ] Базовая функциональность GStreamer содержит функции для регистрации и загрузки плагинов, а также для предоставления основ всех классов в форме базовых классов . Библиотеки подключаемых модулей динамически загружаются для поддержки широкого спектра кодеков , форматов контейнеров , драйверов ввода/вывода и эффектов.
Плагины могут быть установлены полуавтоматически при первой необходимости. Для этой цели в дистрибутивах может быть зарегистрирован бэкэнд, который преобразует описания функций в имена пакетов.
Начиная с версии 0.9 плагины сгруппированы в три набора (названных в честь фильма « Хороший, плохой, злой »). [ 10 ]
Название набора плагинов | Описание |
---|---|
Хороший | Этот пакет содержит плагины GStreamer из «хорошего» набора, набор высококачественных плагинов под лицензией LGPL. [ 11 ] |
Плохой | GStreamer Bad Plug-ins включает в себя набор плагинов, которые не соответствуют качеству остальных. Они могут близко приближаться к плагинам хорошего качества, но им чего-то не хватает: возможно, хорошего обзора кода , какой-то документации, набора тестов, настоящего живого сопровождающего или какого-то реального широкого использования. [ 12 ] |
Уродливый | Этот пакет содержит плагины из "уродливого" набора, набора плагинов хорошего качества, которые могут вызвать проблемы с распространением. [ 13 ] |
Отдельные дистрибутивы могут дополнительно классифицировать эти плагины: например, Ubuntu группирует «плохие» и «уродливые» наборы в компоненты «Вселенная» или «Мультивселенная» .
Кроме того, существует плагин GStreamer FFmpeg ( называемый gst-libav). по историческим причинам [ 14 ] ), что расширяет количество поддерживаемых медиаформатов.
Видео ускорение
[ редактировать ]Существуют различные блоки SIP , которые могут выполнять вычисления для декодирования определенных видеокодеков, таких как PureVideo , UVD , QuickSync Video , TI Ducati и других. Это должно поддерживаться драйвером устройства , который, в свою очередь, предоставляет один или несколько интерфейсов , таких как VDPAU , VAAPI , Distributed Codec Engine или DXVA, для программного обеспечения конечного пользователя, такого как MPlayer, для доступа к этому оборудованию и выгрузки на него вычислений.
- Можно использовать Video Coding Engine с GStreamer через OpenMAX IL . плагин-оболочку gst-omx . [ 15 ] Это возможно, например, на Raspberry Pi . [ 16 ]
- Ядро SIP , присутствующее в некоторых SoC Texas Instruments, также доступно через GStreamer: гст-дмай , гст-опенмакс , гст-дсп . [ 17 ]
- VDPAU и VAAPI поддерживаются GNOME Videos >= 2.28.0 и GStreamer >= 0.10.26 с 2010 г. [ 18 ]
- Broadcom Crystal HD Поддерживается [ 19 ]
Медиа форматы
[ редактировать ]Упомянутые ранее плагины GStreamer Good, Bad и Ugly обеспечивают, наряду с элементами обработки/фильтрами всех видов, поддержку широкого спектра форматов файлов, протоколов и мультимедийных кодеков. Помимо таковых, поддержка более сотни форматов сжатия (включая MPEG-1 , MPEG-2 , MPEG-4 , H.261 , H.263 , H.264 , RealVideo , MP3 , WMV и др.). [ 20 ] ) прозрачно предоставляется через gst-libav плагин .
История и развитие
[ редактировать ]Первые дни
[ редактировать ]Эрик Валтинсен основал проект GStreamer в 1999 году. Многие из его основных дизайнерских идей были взяты из исследовательского проекта Орегонского института последипломного образования . [ 21 ] Вскоре после этого к проекту присоединился Вим Тайманс , который значительно расширил многие аспекты системы. С тех пор внесли свой вклад многие другие разработчики программного обеспечения.
Первым крупным релизом стала версия 0.1.0, о которой было объявлено 11 января 2001 года. [ 1 ] Вскоре после этого у GStreamer появилась первая коммерческая поддержка. К концу января 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, сосредоточившись на других проектах.
Все релизные серии проекта сталкиваются с трудностями. Каждая серия не пользуется большой популярностью в сообществе Linux, в основном из-за проблем со стабильностью и серьезного недостатка функций по сравнению с конкурирующими проектами, такими как Xine , MPlayer и VLC . Проект также страдает от недостатка руководства, поскольку Вим Тайманс, возглавлявший проект после ухода Эрика Валтинсена, практически прекратил участие.
Серия 0.10
[ редактировать ]В 2004 году была основана новая компания Fluendo , которая хотела использовать GStreamer для написания потокового сервера Flumotion , а также предоставлять мультимедийные решения для GStreamer. За это время Fluendo наняла большинство основных разработчиков, включая Вима Тайманса, и заручилась поддержкой таких компаний, как Nokia и Intel, чтобы вывести GStreamer на профессиональный уровень и способствовать принятию сообществом.
С возвращением к рулю Вима Тайманса ядро GStreamer было переработано и превратилось в текущую серию 0.10.x, первый выпуск которой (0.10.0) вышел в декабре 2005 года. [ 22 ] С тех пор он поддерживает совместимость API и ABI .
Благодаря новому стабильному ядру GStreamer приобрел популярность в 2006 году, его использовали медиаплееры, включая Totem , Rhythmbox и Banshee , а также многие другие. Его также приняли такие корпорации, как Nokia , Motorola , Texas Instruments , Freescale , Tandberg и Intel .
стал соучредителем Collabora Multimedia В 2007 году большинство основных разработчиков GStreamer покинули Fluendo, в том числе сопровождающий GStreamer Вим Тайманс, который вместе с другими ветеранами GStreamer , в то время как другие присоединились к Sun Microsystems , Oblong Industries и Songbird .
В период с июня 2012 по август 2014 года GStreamer 0.10 также распространялся компаниями Collabora и Fluendo как мультиплатформенный SDK . [ 23 ] на стороннем веб-сайте gstreamer.com (а не на gstreamer.freedesktop.org для проекта сообщества разработчиков). Целью было предоставить разработчикам приложений SDK, который был бы функционально идентичен для Windows, Mac OS X , iOS и Android. Инициатива SDK была направлена на облегчение коммерческого внедрения проекта GStreamer, поскольку он предоставлял стандартизированную точку входа для разработки мультимедийных приложений с помощью GStreamer без необходимости самостоятельно создавать всю платформу. Пользователи SDK также получили пользу от документации, заархивированной 16 июня 2012 г. на Wayback Machine , учебных пособий и инструкций, специфичных для этого SDK.
Серия 1.x
[ редактировать ]GStreamer 1.0 был выпущен 24 сентября 2012 года. [ 24 ] Серию 1.x можно установить параллельно с GStreamer 0.10, чтобы облегчить переход, и она обеспечивает множество архитектурных преимуществ по сравнению с серией 0.10. [ 25 ] В общем, GStreamer 1.0 принес значительные улучшения в следующих областях:
- Поддержка встроенных процессоров, снижение энергопотребления, перенос работы на специализированные аппаратные блоки (например, DSP ).
- Аппаратное ускорение декодирования/кодирования видео с использованием графических процессоров
- Управление памятью с нулевым копированием (избегая ненужных обменов между процессором и графическим процессором) для повышения производительности и снижения энергопотребления.
- Динамические конвейеры
- Очистка API и кода
Помимо технических улучшений, серия 1.x также отличается новой схемой управления версиями выпусков. Как поясняется в дорожной карте GStreamer, [ 26 ] все версии 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 опубликовали заявление. [ 27 ] чтобы уточнить, что серия 0.10 больше не поддерживается. В заявлении подтверждается готовность проекта GStreamer помочь разработчикам приложений и плагинов перейти на новую технологию, а также намекается, что те, для кого переход на серию 1.x все еще считается невозможным, могут обратиться за помощью к различным консалтинговым компаниям.
В версии 1.2 добавлена поддержка адаптивной потоковой передачи DASH , изображений JPEG 2000 , видео VP9 и Daala , а также поддержка только декодирования для WebP .
Версия 1.14 вышла 19 марта 2018 г. [ 28 ] добавление поддержки WebRTC , AV1 , Nvidia NVDEC и Secure Reliable Transport , а также других изменений.
Версия 1.22 вышла 23 января 2023 г. [ 29 ] добавление улучшенной поддержки AV1 в дополнение к поддержке HLS , DASH и Microsoft Smooth Streaming для потоковой передачи с адаптивным битрейтом.
См. также
[ редактировать ]- Список программного обеспечения, использующего GStreamer
- OggConvert – простой интерфейс с графическим интерфейсом
- GNOME SoundConverter — интерфейс с графическим интерфейсом на основе GStreamer и GTK для перекодирования цифровых аудиофайлов.
- Pitivi — видеоредактор на базе GStreamer
Ссылки
[ редактировать ]- ^ Jump up to: а б «Выпущен GStreamer «Slipstream» 0.1.0» . 11 января 2001 г. Архивировано из оригинала 11 ноября 2012 г. Проверено 3 ноября 2010 г.
- ^ «Стабильная версия GStreamer 1.24.6 с исправлением ошибок» . 29 июля 2024 г. Проверено 29 июля 2024 г.
- ^ «GStreamer» , Сводка анализа Ohloh , Ohloh , заархивировано из оригинала 26 июня 2014 г. , получено 6 ноября 2016 г.
- ^ Jump up to: а б «Каковы точные условия лицензирования GStreamer и его плагинов?» . сайт freedesktop.org . Архивировано из оригинала 07 июня 2021 г. Проверено 7 июня 2021 г.
- ^ «Игалия Мультимедиа» . Архивировано из оригинала 01 сентября 2021 г. Проверено 1 сентября 2021 г.
- ^ «webOS и GStreamer» . webOShelp. Архивировано из оригинала 22 марта 2009 года . Проверено 25 июля 2009 г.
- ^ «GStreamer: Скачать» . gstreamer.freedesktop.org . Архивировано из оригинала 10 мая 2015 г. Проверено 15 мая 2015 г.
- ^ «Страница проекта GstLAL» . Wiki.ligo.org . Архивировано из оригинала 23 апреля 2020 года . Проверено 6 мая 2019 г.
- ^ Обзор модулей , Gstreamer.freedesktop.org, заархивировано из оригинала 25 января 2012 г. , получено 8 февраля 2012 г.
- ^ Серия о разработке GStreamer 0.9 — Hung by a Thread , Gstreamer.freedesktop.org, заархивировано из оригинала 27 января 2013 г. , получено 24 февраля 2013 г.
- ^ «Хорошие плагины GStreamer» . Архивировано из оригинала 07 февраля 2019 г. Проверено 5 февраля 2019 г.
- ^ «Плохие плагины GStreamer» . Архивировано из оригинала 07 февраля 2019 г. Проверено 5 февраля 2019 г.
- ^ «Уродливые плагины GStreamer» . Архивировано из оригинала 07 февраля 2019 г. Проверено 5 февраля 2019 г.
- ^ «subprojects/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab» . ГитЛаб . Проверено 12 июля 2022 г.
- ^ «Плагин оболочки GStreamer OpenMAX IL» . gstreamer.freedesktop.org . Архивировано из оригинала 10 июля 2017 г. Проверено 21 июля 2017 г.
- ^ «Gstreamer 1.0 для Raspbian» . GRaspberrypi.org . Архивировано из оригинала 10 июля 2017 г. Проверено 21 июля 2017 г.
- ^ «Плагины GStreamer для оборудования TI» . Processors.wiki.ti.com . Архивировано из оригинала 28 июня 2017 г. Проверено 21 июля 2017 г.
- ^ «В выпуске 11 Fluendo Codec Pack реализована поддержка VDPAU и VAAPI» . 25 марта 2010 г. Архивировано из оригинала 24 июня 2014 г.
- ^ Веб-мастер Debian. «Debian — Подробная информация о пакете gstreamer0.10-crystalhd в Wheezy» . Packages.debian.org . Архивировано из оригинала 29 июня 2017 г. Проверено 21 июля 2017 г.
- ^ «subprojects/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab» . ГитЛаб . Проверено 12 июля 2022 г.
- ^ Эдж, Джейк (26 октября 2010 г.). «GStreamer: прошлое, настоящее и будущее» . LWN.net . Проверено 15 мая 2022 г.
- ^ «Стабильный выпуск GStreamer 0.10.0 — анонс первого выпуска из стабильной серии 0.10» . gstreamer.freedesktop.org . Архивировано из оригинала 7 июля 2017 г. Проверено 21 июля 2017 г.
- ^ «Документация GStreamer» . Docs.gstreamer.com . Архивировано из оригинала 28 октября 2016 г. Проверено 21 июля 2017 г.
- ^ «Выпущен GStreamer 1.0» . gstreamer.freedesktop.org . Архивировано из оригинала 7 июля 2017 г. Проверено 21 июля 2017 г.
- ^ «GStreamer 1.0 и 0.10» . Lwn.net . Архивировано из оригинала 13 июня 2017 г. Проверено 21 июля 2017 г.
- ^ «ReleasePlanning2013 — gstreamer Wiki» . Архивировано из оригинала 15 августа 2013 г. Проверено 16 сентября 2013 г.
- ^ «GStreamer 0.10 больше не поддерживается» . Lists.freedesktop.org . 11 марта 2013 г. Архивировано из оригинала 10 июля 2017 г. Проверено 21 июля 2017 г.
- ^ «Примечания к выпуску GStreamer 1.14» . Архивировано из оригинала 20 марта 2018 г. Проверено 8 сентября 2018 г.
- ^ «Примечания к выпуску GStreamer 1.22» . gstreamer.freedesktop.org . Проверено 18 мая 2023 г.