Как использовать GStreamer для воспроизведения видео в формате mp4?

Вопрос или проблема

Я хочу использовать GStreamer на Ubuntu 21.04. Вот что я пробовал:

user@host:~$ gst-launch-1.0 -v playbin uri=file:///home/user/thisVideo.mp4
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-size = -1
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-duration = -1
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: use-buffering = false
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: download = false
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: uri = file:///home/user/thisVideo.mp4
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: connection-speed = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: source = "\(GstFileSrc\)\ source"
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/quicktime, variant=(string)iso
Missing element: Quicktime demuxer
WARNING: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: No decoder available for type 'video/quicktime, variant=(string)iso'.
Additional debug info:
gsturidecodebin.c(921): unknown_type_cb (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: Your GStreamer installation is missing a plug-in.
Additional debug info:
gsturidecodebin.c(988): no_more_pads_full (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0:
no suitable plugins found:
gstdecodebin2.c(4640): gst_decode_bin_expose (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: Quicktime (video/quicktime, variant=(string)iso)

ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

Я думаю, что этот вывод подразумевает, что Quicktime демультиплексор не установлен в моей системе. Может кто-нибудь, пожалуйста, сказать мне, что я должен сделать, чтобы воспроизвести это видео в GStreamer?

ИЗМЕНЕНИЕ:
Мне кажется, что проблема намного глубже, чем просто отсутствие декодера. Вместо этого кажется, что у меня отсутствуют все декодеры. Я пытался применить GStreamer к различным файлам разных форматов, но я постоянно получаю сообщения, означающие ‘отсутствие декодера’. Вот еще один пример:

user@host:~$ gst-play-1.0 /home/user/someAudio.flac
Press 'k' to see a list of keyboard shortcuts.
Now playing /home/user/someAudio.flac
WARNING No decoder available for type 'audio/x-flac'.
WARNING debug information: gsturidecodebin.c(921): unknown_type_cb (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0
ERROR Your GStreamer installation is missing a plug-in. for file:///home/user/someAudio.flac
ERROR debug information: gsturidecodebin.c(988): no_more_pads_full (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0:
no suitable plugins found:
gstdecodebin2.c(4640): gst_decode_bin_expose (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: Free Lossless Audio Codec (FLAC) (audio/x-flac)

Reached end of play list.

Итак, я думаю, проблема будет решена, когда я сделаю все общие декодеры доступными в моей системе. Но как это сделать?

sudo apt install gstreamer1.0-plugins-base

И если это не решает проблему

sudo apt install gstreamer1.0-plugins-good
sudo apt install gstreamer1.0-plugins-bad
sudo apt install gstreamer1.0-plugins-ugly

Ответ или решение

Использование GStreamer для воспроизведения MP4 видеофайлов на Ubuntu 21.04 – это относительно простая, но требующая понимания задача, особенно когда возникает проблема с отсутствующими плагинами. В данной статье я объясню, как корректно настроить GStreamer для воспроизведения видео, обращая особое внимание на установку недостающих плагинов и решение возникающих проблем.

Теория

GStreamer – это мощная мультимедийная фреймворк, которая позволяет работать с видеопотоками и аудио на различных платформах. Основное преимущество GStreamer – это его модульность. Фреймворк состоит из ядра и множества плагинов, обеспечивающих поддержку различных форматов и функций. Плагины GStreamer подразделяются на четыре основные категории: базовые (base), хорошие (good), сомнительные (bad) и запатентованные (ugly).

  • Base: обязательные плагины, обеспечивающие базовую функциональность.
  • Good: проверенные и качественные плагины с хорошей репутацией.
  • Bad: плагины, которые могут быть нестабильны или недостаточно протестированы.
  • Ugly: плагины, часто включающие запатентованные технологии, которые могут вызвать проблемы с лицензированием.

Для воспроизведения MP4 видео, как в данном случае, важен плагин, который отвечает за декодирование формата Quicktime (включая видео/quicktime, variant=(string)iso), и который входит в категорию "ugly" из-за патентных вопросов.

Пример

Если вы столкнулись с ошибкой, уведомляющей о "Your GStreamer installation is missing a plug-in", это указывает на отсутствие необходимых декодеров. Пример выполнения команды gst-launch-1.0, которая приводит к этой ошибке, уже подробно описан в вопросе. Основная проблема заключается в недоступности необходимых плагинов для обработки данного видео.

Аналогичная проблема возникает и при попытке воспроизведения FLAC аудиофайлов, когда отсутствует декодер для обработки аудио/x-flac.

Применение

Чтобы устранить возникшую проблему и правильно воспроизвести MP4 видео в GStreamer на Ubuntu 21.04, необходимо установить все соответствующие плагины. Следующие шаги обеспечат установку недостающих библиотек и помогут решить проблему.

  1. Установите базовые плагины:

    sudo apt install gstreamer1.0-plugins-base

    Этот пакет содержит основные компоненты для работы с медиаданными.

  2. Установите хорошие плагины:

    sudo apt install gstreamer1.0-plugins-good

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

  3. Установите сомнительные плагины:

    sudo apt install gstreamer1.0-plugins-bad

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

  4. Установите запатентованные плагины:

    sudo apt install gstreamer1.0-plugins-ugly

    Этот пакет включает в себя плагины, которые необходимы для поддержки запатентованных форматов, таких как MP3 и его производные.

После установки всех этих пакетов, ваш GStreamer должен правильно идентифицировать и использовать демультиплексоры и декодеры, необходимые для воспроизведения MP4 видео. Вот как можно повторно запустить команду для воспроизведения видео:

gst-launch-1.0 -v playbin uri=file:///home/user/thisVideo.mp4

Если после установки всех перечисленных пакетов проблема всё ещё сохраняется, убедитесь, что все зависимости пакетов обновлены и отсутствуют конфликты:

sudo apt update && sudo apt upgrade

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

sudo apt install gstreamer1.0-libav

Работа GStreamer может зависеть от правильного функционирования сглаживания и программного обеспечения OpenGL, поэтому, если есть проблемы со звуком или видео, стоит убедиться в совместимости драйверов вашего оборудования.

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

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

Капча загружается...