- Вопрос или проблема
- Ответ или решение
- Решение проблемы с отсутствующим плагином Quicktime в GStreamer на OpenSuse TW
- 1. Проверка установленных плагинов GStreamer
- 2. Установка необходимых пакетов
- 3. Очистка кеша GStreamer
- 4. Проверка системных библиотек
- 5. Проверка зависимостей
- 6. Перекодирование видео
- 7. Альтернативные методы воспроизведения
- Заключение
Вопрос или проблема
Я пытаюсь воспроизвести простой файл mp4 с помощью gstreamer на OpenSuse TW, к сожалению, это вызывает некоторые проблемы, так как он не может найти декодер Quicktime, который, тем не менее, установлен согласно qst-inspect
.
Команда:
gst-launch-1.0 playbin uri=file:///$(pwd)/video2.mp4
Сообщение об ошибке:
Установка пайплайна в PAUSED ...
Пайплайн PREROLLING ...
Отсутствующий элемент: демультиплексор Quicktime
Предупреждение: от элемента /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: Нет доступного декодера для типа 'video/quicktime, variant=(string)iso'.
Дополнительная отладочная информация:
../gst/playback/gsturidecodebin.c(1003): unknown_type_cb (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0
Ошибка: от элемента /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: Ваша установка GStreamer не имеет плагина.
Дополнительная отладочная информация:
../gst/playback/gsturidecodebin.c(1070): no_more_pads_full (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0:
Не найдено подходящих плагинов:
../gst/playback/gstdecodebin2.c(4736): gst_decode_bin_expose (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
Не найдено подходящих плагинов:
Отсутствующий декодер: Quicktime (video/quicktime, variant=(string)iso)
Ошибка: пайплайн не хочет прероллить.
Установка пайплайна в NULL ...
Ошибка: от элемента /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind: Внутренняя ошибка потока данных.
Дополнительная отладочная информация:
../plugins/elements/gsttypefindelement.c(1257): gst_type_find_element_loop (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind:
стриминг остановлен, причина не-связь (-1)
Ошибка: пайплайн не хочет прероллить.
Освобождение пайплайна ...
Вывод qst-inspect-1.0
...
typefindfunctions: video/quicktime: mov, mp4
...
Вывод gst-inspect-1.0 | grep -i missing
: Ничего
Что я сделал:
- Я установил следующие пакеты
gstreamer-plugins-libav gstreamer-plugins-base gstreamer-plugins-good gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-plugins-ugly-codecs gstreamer-plugins-bad-codecs
- Перекодировал mp4 в mp4 и в mov с помощью ffmpeg, в результате чего возникли аналогичные проблемы
rm ~/.cache/gstreamer-1.0/registry.x86_64.bin
- Конечно, спрашивал ChatGPT, без пользы
- Искал решение, почти все они приводили к тем же предложениям
Спасибо заранее!
Ответ или решение
Решение проблемы с отсутствующим плагином Quicktime в GStreamer на OpenSuse TW
Если вы столкнулись с проблемой отсутствия плагина "Quicktime демультиплексор" при попытке воспроизвести MP4 файл с помощью GStreamer, это может быть вызвано несколькими факторами, даже если вы уже установили необходимые плагины. Давайте рассмотрим различные подходы для устранения данной ошибки.
1. Проверка установленных плагинов GStreamer
Несмотря на то что вы уже проверили, что необходимый плагин установлен с помощью команды qst-inspect-1.0
, стоит убедиться, что все необходимые плагины GStreamer действительно присутствуют и aktiven. Используйте следующую команду:
gst-inspect-1.0 | grep -i quicktime
Это должно показать, установлены ли Quicktime демультиплексоры (qtdemux
) и любые связанные с ним декодеры. Если командa не находит нужных элементов, возможно, вам стоит переустановить пакеты.
2. Установка необходимых пакетов
Вы упоминали, что установили пакеты:
gstreamer-plugins-libav gstreamer-plugins-base gstreamer-plugins-good gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-plugins-ugly-codecs gstreamer-plugins-bad-codecs
Однако, стоит также убедиться, что вы установили пакет gstreamer-plugins-good
, который включает в себя qtdemux
. Выполните следующую команду для установки плагинов:
sudo zypper install gstreamer-plugins-good
3. Очистка кеша GStreamer
Вы уже удалили кеш с помощью команды rm ~/.cache/gstreamer-1.0/registry.x86_64.bin
, что является правильной практикой. Убедитесь, что после удаления кеша вы перезапустили GStreamer для обновления реестра:
gst-inspect-1.0
4. Проверка системных библиотек
Иногда отсутствует библиотека, связанная с внутренними плагинами GStreamer. Убедитесь, что все необходимые библиотеки установлены и обновлены. Для этого выполните команду обновления системы:
sudo zypper refresh
sudo zypper update
5. Проверка зависимостей
Необходимо также убедиться в отсутствии проблем с зависимостями. Для этого можно воспользоваться командой:
zypper verify
Эта команда позволит выявить, если возникли какие-либо конфликты или проблемы с установленным программным обеспечением.
6. Перекодирование видео
Вы указали, что вы перекодировали MP4 в другой формат с помощью ffmpeg
, но не получили позитивного результата. Убедитесь, что вы используете правильные кодеки. Попробуйте использовать следующий набор команд для перекодирования:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict experimental output.mp4
Это создаст новый файл, который должен быть совместим с GStreamer.
7. Альтернативные методы воспроизведения
Если все вышеуказанные решения не сработали, попробуйте использовать другой способ для воспроизведения файла. Вместо playbin
можете попробовать использовать конкретные элементы, такие как qtdemux
, avdec_h264
для видео и faad
для аудио. Например:
gst-launch-1.0 filesrc location=video2.mp4 ! qtdemux name=demux \
demux. ! queue ! avdec_h264 ! autovideosink \
demux. ! queue ! faad ! autoaudiosink
Эта команда использует элемент qtdemux
для разделения потоков, что даст больше контроля над процессом воспроизведения.
Заключение
Ошибки, связанные с отсутствием плагинов GStreamer, могут быть вызваны различными факторами, начиная от неправильной установки необходимых пакетов до проблем с кодеками или зависимостями. Следуя указанным шагам, вы сможете устранить проблему и успешно воспроизвести MP4 файлы в GStreamer на вашей системе OpenSuse TW. Если проблема все еще остается, возможно, стоит обратиться к сообществу GStreamer или на специализированные форумы для дальнейшей диагностики.