С примерами на Python и C

Что такое GStreamer?

GStreamer — это швейцарский армейский нож для создания, редактирования, трансляции и потребления мультимедиа. Он построен на концепции модульных плагинов, каждый плагин обычно служит одной цели (некоторые делают гораздо больше).

Типичное мультимедийное приложение должно выполнять множество задач, включая, помимо прочего, установление сетевых рукопожатий, декодирование входящих потоков с помощью правильного кодека, адаптацию потоков к локальному оборудованию и возможностям отображения и т. д. Таким образом, операции с мультимедиа довольно сложны, если не сказать больше.

Gstreamer скрывает всю сложность плагинов и предлагает нам мощную высокоуровневую структуру для удобного управления медиапотоками. Например, если вы добавите плагин x264enc почти волшебным образом, вы добавите возможность кодирования потоков со сжатием H.264.

С точки зрения пользователя, все, что нужно, — это найти подходящий плагин в каталоге и добавить его в конвейер.

Если вам интересно, вот список мультимедийных приложений, работающих на gstreamer.

Итак, как мы можем использовать gstreamer? Давайте познакомимся с основными строительными блоками.

Трубопроводы, элементы, прокладки и колпачки

Трубопровод

Проще говоря, конвейеры представляют работу, которую мы собираемся выполнять с помощью gstreamer. Например, мы можем захотеть загрузить видеофайл, декодировать видеопоток в кодировке h264 и аудиопоток в кодировке aac, а затем отобразить видеопоток в окне на нашем экране. Эти операции семантически представляют один конвейер, инкапсулирующий поток данных от одного конца к другому.

Элемент

Основным строительным блоком конвейера является Элемент.

Думайте об элементе как о доме-черном ящике с двумя дверями, одна дверь предназначена для входа, а другая — для выхода. Когда вы входите в черный ящик, вы можете увидеть магию!

Колодки

В конвейере данные поступают из источников и потребляются в приемниках.

В нашей метафоре входная дверь — это подушка для раковины, а дверь выхода — подушка для источника. Подушка для раковины — это…