Вопрос или проблема
Я хочу использовать 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, необходимо установить все соответствующие плагины. Следующие шаги обеспечат установку недостающих библиотек и помогут решить проблему.
-
Установите базовые плагины:
sudo apt install gstreamer1.0-plugins-base
Этот пакет содержит основные компоненты для работы с медиаданными.
-
Установите хорошие плагины:
sudo apt install gstreamer1.0-plugins-good
Включает в себя серию плагинов с лицензией LGPL, предоставляющих дополнительные возможности.
-
Установите сомнительные плагины:
sudo apt install gstreamer1.0-plugins-bad
Несмотря на то, что эти плагины могут быть неполностью протестированы, они необходимы для расширения возможностей GStreamer.
-
Установите запатентованные плагины:
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, обеспечив достойную поддержку видео и аудиоформатов, подходящих для большинства нужд пользователей.