GStreamer gst_element_factory_make не работает

Я пробую тестовое приложение GStreamer, но во время выполнения следующая строка не работает:

demuxer = gst_element_factory_make ("oggdemux", "ogg-demuxer"); // returns NULL

Я использую MacOSX и установил GStreamer, libogg и vorbis-tools через MacPorts. Поэтому я не понимаю, почему это не удается.

Любые предложения о том, как заставить его работать?

РЕДАКТИРОВАНИЕ: РЕШЕНО!

Проблема заключалась в том, что мне нужно было установить плагин автоопределения из пакета gst-plugins-good.

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

Удалите установку MacPorts:

sudo port uninstall gstreamer

Добавьте следующую строку в ~/.profile

export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

Загрузите исходники gstreamer, gstreamer-plugins-base и gstreamer-plugins-good.

Соберите и установите gstreamer (./configure, make, make install)

Соберите и установите gstreamer-plugins-base (./configure, make, make install)

А для gstreamer-plugins-good я создал только пакет autodetect, потому что все это привело к ошибкам для некоторых плагинов, которые мне сейчас не нужны или которые меня не интересуют. Я сделал это так:

./configure
cd gst/autodetect/
make
sudo make install

Прямо сейчас программа собирается и работает. Однако я, кажется, не получаю никакого аудиовыхода :( но это еще одна проблема.


person StackedCrooked    schedule 11.11.2009    source источник
comment
Пробовали ли вы передавать NULL в качестве второго аргумента (который должен генерировать для вас уникальное имя)?   -  person Matthew Murdoch    schedule 11.11.2009
comment
@Matthew Murdoch: только что попробовал, но функция по-прежнему возвращает NULL...   -  person StackedCrooked    schedule 11.11.2009


Ответы (2)


При чтении gstelementfactory.c (версия GStreamer 0.10.25) строки 463 (определение функции gst_element_factory_make) есть три ошибки, которые вызывают возврат NULL:

  1. Первый аргумент («имя фабрики») — NULL (очевидно, в вашем коде это нормально)
  2. Не удалось найти фабрику именованных элементов (функция gst_element_factory_find вернула NULL)
  3. Не удалось создать экземпляр элемента (функция gst_element_Factory_create вернула NULL)

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

Чтобы убедиться, что плагин oggdemux настроен правильно, попробуйте запустить:

gst-inspect oggdemux

Если это не возвращает результат, попробуйте использовать gst-register для его регистрации.

person Matthew Murdoch    schedule 11.11.2009
comment
gst-inspect oggdemux => Нет такого элемента или плагина 'oggdemux'. Как я могу установить этот плагин? В документах я могу найти обзоры существующих плагинов, но я не нашел инструкций, как их получить... - person StackedCrooked; 11.11.2009
comment
Ладно, думаю, я знаю, что происходит. MacPorts, вероятно, не установили поддержку ogg. gstreamer.org/ данные/doc/gstreamer/head/faq/html/ - person StackedCrooked; 11.11.2009

Если вы используете систему Ubuntu, просто сделайте следующее

sudo apt-get установить gstreamer1.0-*

это решит проблему.

person Kranthi Kiran Reddy    schedule 09.04.2013