C++ GStreamer gst\u元件\u工厂\u制造失败

C++ GStreamer gst\u元件\u工厂\u制造失败,c++,c,gstreamer,C++,C,Gstreamer,我正在试用GStreamer测试应用程序,但在运行时,以下代码行失败: demuxer = gst_element_factory_make ("oggdemux", "ogg-demuxer"); // returns NULL 我正在使用MacOSX,并通过MacPorts安装了GStreamer、libogg和vorbis工具。所以我不明白为什么它会失败 有没有关于如何让它工作的建议 编辑:已解决 问题是我需要从gst插件良好的软件包中安装autodetect插件 以下是使其工作的操作列

我正在试用GStreamer测试应用程序,但在运行时,以下代码行失败:

demuxer = gst_element_factory_make ("oggdemux", "ogg-demuxer"); // returns NULL
我正在使用MacOSX,并通过MacPorts安装了GStreamer、libogg和vorbis工具。所以我不明白为什么它会失败

有没有关于如何让它工作的建议

编辑:已解决

问题是我需要从gst插件良好的软件包中安装autodetect插件

以下是使其工作的操作列表:

删除MacPorts安装:

sudo端口卸载gstreamer

将以下行添加到~/.profile

export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
下载gstreamer、gstreamer插件库和gstreamer插件的好源码

构建和安装gstreamer(./configure,make,make-install)

构建并安装gstreamer插件库(./configure,make,make-install)

对于gstreamer插件,我只构建了autodetect包,因为构建所有插件都会导致一些我现在不需要或不关心的插件出错。我是这样做的:

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

现在,该程序构建并运行。然而,我似乎没有得到任何音频输出:(但这是另一个问题。

读取
gstelementfactory.c
(GStreamer版本0.10.25)第463行(
gst\u元素\u工厂制作
函数定义),有三个错误导致
NULL
返回:

  • 第一个参数('factoryname')是
    NULL
    (在代码中显然是OK)
  • 找不到命名的元素工厂(函数
    gst\u element\u factory\u find
    返回
    NULL
  • 无法创建元素实例(函数
    gst\u element\u Factory\u create
    返回
    NULL
  • 代码执行大量日志记录,因此如果您能够启用此功能,那么您可能会得到关于底层问题的进一步提示

    要检查oggdemux插件是否正确配置,请尝试运行:

    gst-inspect oggdemux
    

    如果这没有返回结果,请尝试使用
    gst register
    进行注册。

    如果您使用的是ubuntu系统,只需执行以下操作

    sudo apt get安装gstreamer1.0-*


    这将解决问题。

    是否尝试将
    NULL
    作为第二个参数传递(该参数将为您生成唯一的名称)?@Matthew Murdoch:刚刚试过,但函数仍然返回NULL…gst inspect oggdemux=>没有这样的元素或插件“oggdemux”。我如何安装这个插件?在文档中我可以找到现有插件的概述,但我没有找到任何关于如何获取它们的说明…好吧,我想我知道发生了什么。MacPorts可能没有安装ogg支持。