задний план Исторически Linux сильно отставал от других операционных систем в области мультимедиа. Windows от Microsoft и MacOS от Apple уже имеют хорошую поддержку мультимедийных устройств, создание мультимедиа, воспроизведение и обработку в реальном времени. С другой стороны, всеобъемлющий вклад Linux в мультимедийные приложения относительно невелик, что также затрудняет конкуренцию Linux с Windows и MacOS в области программного обеспечения профессионального уровня. GStreamer предназначен для решения текущих проблем с мультимедиа в Linux.
Что такое GStreamer?GStreamer — это фреймворк для создания потоковых приложений. Среда программирования GStreamer позволяет писать приложения для потокового мультимедиа любого типа. GStreamer не ограничивается обработкой аудио и видео, он может обрабатывать поток данных любого типа. Конвейерный метод проектирования почти не нагружает практические фильтры и может даже использоваться для разработки высококачественных аудио- и видеоприложений с высокими требованиями к задержке.
Наиболее часто GStreamer используется для создания проигрывателя.GStreamer уже поддерживает многие форматы файлов, в том числе: MP3, Ogg/Vorbis, MPEG-12, AVI, Quickime, mod и так далее. С этой точки зрения GStreamer больше похож на плеер. Но главное его преимущество в том, что его вставные компоненты можно легко вставить в любую трубу.
Платформа GStreamer основана на подключаемых модулях, некоторые подключаемые модули предоставляют различные кодеки мультимедийных цифровых сигналов, а некоторые предоставляют другие функции. Все плагины могут быть связаны с любым из определенных конвейеров потока данных.
Простое наслоение приложения фреймворка GStreamer:
Media Applications
Верхний уровень — это приложения, такие как некоторые инструменты, поставляемые с GStreamer (gst-launch, gst-inspect и т. д.), и библиотеки, основанные на упаковке GStreamer (gst-player, gst-rtsp-server, gst-editing-services, и т.д.) Согласно приложениям, реализованным в различных сценариях.
Core Framework Средний уровень — Core Framework, который в основном обеспечивает:
-
Интерфейсы, необходимые приложениям верхнего уровня
-
Платформа плагина
-
Структура трубопровода
-
Механизм передачи и обработки данных между элементами
-
Синхронизация между несколькими медиапотоками (потоковая передача) (например, синхронизация аудио и видео)
-
Различные другие необходимые библиотеки инструментов
PluginsНижний слой — это различные плагины, реализующие специфическую обработку данных и вывод аудио и видео, приложению не нужно обращать внимание на детали плагинов, а слой Core Framework отвечает за загрузку и управление плагины. Основные категории:
1. Протоколы: Отвечает за обработку различных протоколов, файловых, http, rtsp и т. д.
2. Источники: отвечает за обработку источников данных, alsa, v4l2, tcp/udp и т. д.
3, Форматы: отвечает за обработку медиа-контейнеров, avi, mp4, ogg и т. д.
4, Кодеки: отвечает за кодек медиа, mp3, vorbis и т. д.
5. Фильтры: отвечают за обработку медиапотока, преобразователи, микшеры, эффекты и т. д.
6. Приемники: отвечают за вывод медиапотока на указанное устройство или место назначения, alsa, xvideo, tcp/udp и т. д.
7. Фреймворк GStreamer помещает ядро и подключаемые модули в разные исходные пакеты в зависимости от зрелости каждого модуля и используемого протокола с открытым исходным кодом:
GStreamer: содержит базовую структуру и основные элементы.
gst-plugins-base: Основные плагины, необходимые приложениям GStreamer.
gst-plugins-good: высококачественные плагины под лицензией LGPL.
gst-plugins-ugly: Высококачественный, но с использованием GPL и других плагинов библиотеки, таких как x264, x265 с использованием GPL.
gst-plugins-bad: Плагины, качество которых необходимо улучшить, могут быть перемещены в список хороших плагинов, когда они станут зрелыми.
gst-libav: Обертывает libav, чтобы его можно было использовать в среде GStreamer.
Преимущества GStreamer
-
Хорошо структурированный и мощный: мы можем использовать набор мощных инструментов для создания конвейеров мультимедиа, не написав ни одной строки кода, что делает сложное управление мультимедиа очень простым. GStreamer предоставляет плагинам лаконичный и простой API для создания самоподключаемых (автономных) плагинов, а также интегрирует большое количество механизмов и инструментов отладки и трассировки. GStreamer также предоставляет ряд реальных примеров.
-
Гибкая и расширяемая производительность: все объекты GStreamer могут быть расширены с помощью методов, унаследованных от GObject. Все плагины могут быть динамически загружены.
-
Высокая производительность в основном отражается в: использовании фрагмента g_mem_ GLib и алгоритма немодульного распределения, чтобы сделать выделение памяти как можно меньше. Соединения между плагинами очень легкие, данные передаются через конвейер с минимальными издержками, а передача данных между плагинами в конвейере требует только отбрасывания указателя. Предоставляет механизм для прямого управления целевой памятью. Например, плагин может напрямую записывать данные в пространство памяти, совместно используемое X-сервером, а буфер также может указывать на любую память, например, на внутренний аппаратный буфер звуковой карты. Подсчет ссылок и копирование при записи сводят memcpy к минимуму. Подбуферы эффективно разделяют буферы на управляемые фрагменты. Используйте резьбовые соединения (совместные резьбы), чтобы уменьшить расход нити. Cothreads — это простой и быстрый способ переключения подпрограмм, который потребляет не менее 600 циклов процессора. Используйте специальные плагины для поддержки аппаратного ускорения. Используйте регистрацию плагина с инструкциями, чтобы плагин загружался только тогда, когда он действительно нужен. Все данные суждения не используют блокировки взаимного исключения.
Мы узнаем больше о GStreamer в следующем выпуске
- End -
Благодаря быстрому развитию технологий Amu Lab будет идти в ногу с темпами развития технологий и продолжать рекомендовать всем новейшие технологии и оборудование в индустрии робототехники. Наблюдение за тем, как студенты, прошедшие обучение у нас, делают рывки в технологиях, является величайшей ценностью нашего обучения. Если вы работаете в индустрии роботов, обратите внимание на нашу публичную учетную запись, мы продолжим публиковать самую ценную информацию и технологии в индустрии роботов. Amu Lab стремится к обучению и интеллектуальному оборудованию передовых ИТ-технологий, делая исследования и разработки роботов более эффективными!