Jump to content

GStreamer

(Перенаправлено из плагина GStreamer FFmpeg )
GStreamer
Разработчик(и) Команда GStreamer
Первоначальный выпуск 11 января 2001 г .; 23 года назад ( 11 января 2001 ) [ 1 ]
Стабильная версия
1.24.6 [ 2 ]  Отредактируйте это в Викиданных / 29 июля 2024 г.
Репозиторий
Написано в С [ 3 ]
Операционная система BSD , OpenSolaris , Linux , Android , macOS , iOS , Windows , OS/400
Тип Мультимедийная структура
Лицензия LGPL-2.1 или более поздняя версия [ 4 ]
Веб-сайт gstreamer .freedesktop .org

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 с тремя различными типами плагинов
GStreamer — это конвейер .

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 ] ), что расширяет количество поддерживаемых медиаформатов.

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

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

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

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

[ редактировать ]

Упомянутые ранее плагины 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.

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 для потоковой передачи с адаптивным битрейтом.

См. также

[ редактировать ]
  1. ^ Jump up to: а б «Выпущен GStreamer «Slipstream» 0.1.0» . 11 января 2001 г. Архивировано из оригинала 11 ноября 2012 г. Проверено 3 ноября 2010 г.
  2. ^ «Стабильная версия GStreamer 1.24.6 с исправлением ошибок» . 29 июля 2024 г. Проверено 29 июля 2024 г.
  3. ^ «GStreamer» , Сводка анализа Ohloh , Ohloh , заархивировано из оригинала 26 июня 2014 г. , получено 6 ноября 2016 г.
  4. ^ Jump up to: а б «Каковы точные условия лицензирования GStreamer и его плагинов?» . сайт freedesktop.org . Архивировано из оригинала 07 июня 2021 г. Проверено 7 июня 2021 г.
  5. ^ «Игалия Мультимедиа» . Архивировано из оригинала 01 сентября 2021 г. Проверено 1 сентября 2021 г.
  6. ^ «webOS и GStreamer» . webOShelp. Архивировано из оригинала 22 марта 2009 года . Проверено 25 июля 2009 г.
  7. ^ «GStreamer: Скачать» . gstreamer.freedesktop.org . Архивировано из оригинала 10 мая 2015 г. Проверено 15 мая 2015 г.
  8. ^ «Страница проекта GstLAL» . Wiki.ligo.org . Архивировано из оригинала 23 апреля 2020 года . Проверено 6 мая 2019 г.
  9. ^ Обзор модулей , Gstreamer.freedesktop.org, заархивировано из оригинала 25 января 2012 г. , получено 8 февраля 2012 г.
  10. ^ Серия о разработке GStreamer 0.9 — Hung by a Thread , Gstreamer.freedesktop.org, заархивировано из оригинала 27 января 2013 г. , получено 24 февраля 2013 г.
  11. ^ «Хорошие плагины GStreamer» . Архивировано из оригинала 07 февраля 2019 г. Проверено 5 февраля 2019 г.
  12. ^ «Плохие плагины GStreamer» . Архивировано из оригинала 07 февраля 2019 г. Проверено 5 февраля 2019 г.
  13. ^ «Уродливые плагины GStreamer» . Архивировано из оригинала 07 февраля 2019 г. Проверено 5 февраля 2019 г.
  14. ^ «subprojects/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab» . ГитЛаб . Проверено 12 июля 2022 г.
  15. ^ «Плагин оболочки GStreamer OpenMAX IL» . gstreamer.freedesktop.org . Архивировано из оригинала 10 июля 2017 г. Проверено 21 июля 2017 г.
  16. ^ «Gstreamer 1.0 для Raspbian» . GRaspberrypi.org . Архивировано из оригинала 10 июля 2017 г. Проверено 21 июля 2017 г.
  17. ^ «Плагины GStreamer для оборудования TI» . Processors.wiki.ti.com . Архивировано из оригинала 28 июня 2017 г. Проверено 21 июля 2017 г.
  18. ^ «В выпуске 11 Fluendo Codec Pack реализована поддержка VDPAU и VAAPI» . 25 марта 2010 г. Архивировано из оригинала 24 июня 2014 г.
  19. ^ Веб-мастер Debian. «Debian — Подробная информация о пакете gstreamer0.10-crystalhd в Wheezy» . Packages.debian.org . Архивировано из оригинала 29 июня 2017 г. Проверено 21 июля 2017 г.
  20. ^ «subprojects/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab» . ГитЛаб . Проверено 12 июля 2022 г.
  21. ^ Эдж, Джейк (26 октября 2010 г.). «GStreamer: прошлое, настоящее и будущее» . LWN.net . Проверено 15 мая 2022 г.
  22. ^ «Стабильный выпуск GStreamer 0.10.0 — анонс первого выпуска из стабильной серии 0.10» . gstreamer.freedesktop.org . Архивировано из оригинала 7 июля 2017 г. Проверено 21 июля 2017 г.
  23. ^ «Документация GStreamer» . Docs.gstreamer.com . Архивировано из оригинала 28 октября 2016 г. Проверено 21 июля 2017 г.
  24. ^ «Выпущен GStreamer 1.0» . gstreamer.freedesktop.org . Архивировано из оригинала 7 июля 2017 г. Проверено 21 июля 2017 г.
  25. ^ «GStreamer 1.0 и 0.10» . Lwn.net . Архивировано из оригинала 13 июня 2017 г. Проверено 21 июля 2017 г.
  26. ^ «ReleasePlanning2013 — gstreamer Wiki» . Архивировано из оригинала 15 августа 2013 г. Проверено 16 сентября 2013 г.
  27. ^ «GStreamer 0.10 больше не поддерживается» . Lists.freedesktop.org . 11 марта 2013 г. Архивировано из оригинала 10 июля 2017 г. Проверено 21 июля 2017 г.
  28. ^ «Примечания к выпуску GStreamer 1.14» . Архивировано из оригинала 20 марта 2018 г. Проверено 8 сентября 2018 г.
  29. ^ «Примечания к выпуску GStreamer 1.22» . gstreamer.freedesktop.org . Проверено 18 мая 2023 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2902b7477e2d91c76d74bb83c6fd5e86__1720544520
URL1:https://arc.ask3.ru/arc/aa/29/86/2902b7477e2d91c76d74bb83c6fd5e86.html
Заголовок, (Title) документа по адресу, URL1:
GStreamer - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)