Установка GStreamer на Ubuntu 22.04 или 20.04 LTS Linux

GStreamer – это фреймворк для разработчиков, занимающихся мультимедийными приложениями. Этот фреймворк помогает создавать мультимедийные приложения и конвейеры для обработки аудио и видео.

Итак, если вы хотите попробовать, то в этой статье мы рассмотрим шаги по установке GStreamer на системы Ubuntu.

Примечание: Мы написали эту статью на Ubuntu 22.04, однако и для 20.04 будет то же самое, но версия GStreamer в системном репозитории по умолчанию будет другой.

Шаг 1: Обновление системных пакетов

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

sudo apt update && sudo apt upgrade

Шаг 2: Установите GStreamer на Ubuntu

GStreamer может быть легко установлен на Ubuntu Linux без добавления каких-либо третьих репозиториев с помощью менеджера пакетов APT. Мы можем установить не только основной пакет, но и необходимые компоненты GStreamer, включая инструменты, базовые плагины, хорошие плагины, плохие плагины и уродливые плагины.

Вот команда, которую нужно выполнить:

apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

Шаг 3: Проверьте версию

После завершения установки мы можем проверить, правильно ли установлен GStreamer или нет. Для этого воспользуйтесь приведенной командой.

gst-inspect-1.0 --version

Если в выводе вы увидите информацию о версии, это означает, что GStreamer успешно установлен.

Шаг 4: Пример кода GStreamer

Рассмотрим пример, в котором мы будем использовать конвейер GStreamer в Python с помощью модуля Gst.

Создайте пустой файл с расширением Python:

nano video.py

Теперь добавьте следующий код:

import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst

def main():
    # Initialize GStreamer
    Gst.init(None)

    # Create a pipeline
    pipeline = Gst.parse_launch("videotestsrc ! autovideosink")

    # Start the pipeline
    pipeline.set_state(Gst.State.PLAYING)

    # Wait for EOS (End-of-Stream) or error
    bus = pipeline.get_bus()
    msg = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR | Gst.MessageType.EOS)

    # Stop the pipeline
    pipeline.set_state(Gst.State.NULL)

if __name__ == '__main__':
    main()
 

Сохраните файл, нажав кнопку Ctlr+X , а затем введите Y после этого нажмите кнопку Введите клавиша.

После этого запустите файл:

python3 video.py

Если все сделано правильно, вы увидите окно с тестовым шаблоном видео, как показано на данном скриншоте:

В приведенном выше примере простой конвейер GStreamer генерирует тестовый видеошаблон (videotestsrc) и отображает его в окне (autovideosink).

Вот объяснение кода, который мы использовали для выполнения этого примера:

  1. Сначала импортируйте необходимые модули из gi.repository и инициализируйте модуль Gst.
  2. Сайт main() определяется функция, содержащая наш код GStreamer.
  3. Внутри main(), используется для инициализации GStreamer с помощью Gst.init(None).
  4. Мы создаем трубопровод с помощью Gst.parse_launch("videotestsrc ! autovideosink"). Этот конвейер состоит из элемента источника видео (videotestsrc) и элемента поглощения видео (autovideosink).
  5. Конвейер начнет работу с установки своего состояния в Gst.State.PLAYING. После этого мы ждем, пока конвейер не достигнет конца потока (EOS) или не столкнется с ошибкой, используя шину сообщений. В то время как timed_pop_filtered() метод позволяет блокировать выполнение до тех пор, пока не будет получено сообщение определенного типа.
  6. Как только конвейер завершит работу или столкнется с ошибкой, мы устанавливаем его состояние в Gst.State.NULL , чтобы остановить его.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *