Почему gst_element_factory_find не может найти фабрику "decodebin"?
Я установил gstreamer-1.4.0, чтобы создать простое приложение для декодирования видеофайлов. Конвейер, который я пытаюсь создать, выглядит просто:
filesrc location="file.h264" ! decodebin ! filesink location="file.raw"
Этот конвейер работает нормально, когда я запускаю его, используя gst-launch-1.0, однако, когда я пытаюсь запустить мою программу, написанную на C, он не может найти фабрику под названием "decodebin".
GstElementFactory *factory;
factory = gst_element_factory_find("decodebin");
if( !factory )
// fail
Выше код всегда терпит неудачу (фабрика NULL). gst-inspect-1.0 правильно распознает "decodebin", поэтому я предполагаю, что что-то не так с GST_PLUGIN_PATH или чем-то подобным, но я понятия не имею, как мне правильно его настроить. Но это всего лишь мое предположение, основанное на том факте, что мое приложение создает другие элементы из фабрик, таких как filesrc или filesink, которые в плагине называются coreelements, и все еще декодируют, что происходит из-за сбоев плагина воспроизведения.
Мой вопрос: как я могу исправить свою конфигурацию gstreamer, чтобы распознавать все плагины, а не только основные элементы?
Если я пропустил важную информацию, пожалуйста, дайте мне знать, чтобы я мог добавить ее как можно скорее:)
// РЕДАКТИРОВАТЬ: Допустим, я установил gstreamer из источников (я использую Ubuntu 14.04). Я также установил все плагины (база, сумка, хорошо), также из источников. Каталог установки был /opt/gstreamer-1.4.0/, возможно, это вызывает некоторые проблемы.
Если я выполню команду:
echo $GST_PLUGINS_PATH
все, что я получаю, это пустая строка, похожий эффект, когда я пытаюсь отобразить значения других переменных среды GST_*.
более конкретный вопрос: какие каталоги я должен добавить к каким переменным, чтобы работали плагины не-coreelements?
И если этот вопрос слишком общий, чем:
как gst_element_factory_find("factory_name") проверяет, существует ли данная фабрика?
1 ответ
Не знаю, все ли я исправил, но сейчас я решил свою проблему, скопировав libplayback.so и другие скомпилированные плагины в папку с libcoreelements.so
Похоже, что проблема была вызвана нестандартными установочными каталогами, поэтому мое решение - это исправление, так как я до сих пор не знаю, как было возможно, что gst-inspect-1.0 распознал все плагины, а gst_element_factory_find() не смог. Любое дальнейшее внутри будет оценено по достоинству:)