【问题标题】:Why compiled and installed gstreamer plugin from boilerplate code is not found by gst-inspect为什么 gst-inspect 找不到从样板代码编译和安装的 gstreamer 插件
【发布时间】:2016-02-08 02:01:52
【问题描述】:

我按照 GStreamer Plugin Writer's Guide (1.7.1.1) 中的说明进行操作:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html

为了构建一个新的 gstreamer 插件。基本上我运行了 make_element ,然后按照描述编辑了 Makefile.am 。令人惊讶的是 make 和 make install 成功了,我最终得到了:

/usr/local/lib/gstreamer-1.0/libgstframe_grabber.la

/usr/local/lib/gstreamer-1.0/libgstframe_grabber.so

据我了解,gst-inspect 应该会自动找到这个插件。该指南说 /usr/local/lib/gstreamer-1.0 需要添加到 GST_PLUGIN_PATH 才能找到此目录中的插件。另一份文件指出,该目录是自动搜索的。我尝试了使用和不使用环境变量,但没有运气。

现在我应该说我刚刚开始使用 gstreamer,我正遭受信息过载的困扰。看了这么多文档,还是不知道自己是在构建 gstreamer1.0 还是 gstreamer0.10 插件(我认为该指南是针对 gstreamer1.0 的,因为该指南的版本是 1.7.1.1 但不能不确定)。

有人可以在这里给我一个线索吗?

【问题讨论】:

    标签: plugins gstreamer


    【解决方案1】:

    有许多可能的原因会导致此问题。
    首先,检查您的插件是否被命令gst-inspect-1.0 -b 列入黑名单。 如果您的插件出现在此处,则表示它确实已被列入黑名单。
    在这种情况下,删除目录~/.cache/,然后再次运行gst-inpect-1.0。 这将强制 GStreamer 重新扫描插件列表。如果黑名单的原因还没有解决,gst-inpect 可能会打印出原因在这里给你。

    另一个可能的原因(但不太可能发生)是将GST_REGISTRY_UPDATE 设置为no,这将强制 GStreamer 不重新扫描插件目录,因此找不到新插件

    P/s:该指南适用于 GStreamer 1.0

    【讨论】:

      【解决方案2】:

      如果您尝试将插件从黑名单中删除,但仍未显示,请尝试以下操作:

      export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0

      /usr/local/lib/gstreamer-1.0 是 make 在插件情况下使用的默认目录。如果您定义了不同的目录,请使用它。

      然后运行gst-inspect-1.0,你会发现新的编译安装插件。

      无论您是使用gst-launch-1.0 创建静态管道还是运行您自己的代码,每次都需要在shell 中执行export。除了在 .bashrc 文件中输入它之外,我找不到任何替代方法来使其永久化。如果你有,请通过 cmets 提出建议。

      【讨论】:

      • 就我而言,我使用的是 CentOS 7,目录应该是 gstreamer-0.10 gst-inspect-1.0 --version gst-inspect-1.0 version 1.10.4 GStreamer 1.10.4 redhat.com - -------------------------- gst-inspect --version gst-inspect-0.10 版本 0.10.36 GStreamer 0.10.36 download.fedora.redhat.com/fedora跨度>
      【解决方案3】:

      如果您在 gst-plugin 目录中运行./configure --help,您将看到以下内容:

      By default, make install' will install all the files in /usr/local/bin', /usr/local/lib' etc. You can specify an installation prefix other than/usr/local' using --prefix', for instance--prefix=$HOME'.

      如果您在原始安装后执行:sudo updatedb && locate libgst[NAME_OF_YOUR_PLUGIN].so 您应该会看到包含您的插件的库所在的位置(在我的情况下,它位于 /usr/local/lib/gstreamer-1.0/ 下,如上面的配置帮助所述)。

      现在在我的机器上,GStreamer“官方”插件安装在: /usr/lib/i386-linux-gnu/gstreamer-1.0/ 下。这是应该存储新创建的插件库的地方。

      要将插件存储在正确的位置,请使用以下参数运行configure:

      ./configure --libdir=/usr/lib/i386-linux-gnu 后跟 make && sudo make install

      用--libdir 覆盖而不是--prefix 很重要! --prefix 的使用会在 /usr/lib/i386-linux-gnu 下粘贴一个我们不想拥有的 /lib。gst-inspect-1.0 将找不到该插件如果 /lib 被添加到路径中。

      补充说明: 即使插件位于正确的位置,当您运行 gst-inspect-1.0 时,您仍可能会看到 GStreamer 将其列入黑名单。黑名单的原因之一可能是您的插件所需的共享库/ies 未安装或在您的平台上找不到。 ldd 命令可以帮助找出插件可能具有的依赖项。只需运行 ldd [YOUR_GSTREAMER_LIBRARY].so

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        • 1970-01-01
        • 1970-01-01
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        相关资源
        最近更新 更多