我按照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。令人惊讶的制作和安装工作,我最终得到:
/US人/local/礼拜/个streamer-1.0/lib GST frame_grabber.拉
/US人/local/礼拜/个streamer-1.0/lib GST frame_grabber.so
据我了解,gst-inspect应该自动找到这个插件。该指南说需要将/usr/local/lib/gstreamer-1.0添加到GST_PLUGIN_PATH中,以便找到此目录中的插件。另一个文档声明该目录是自动搜索的。我尝试使用和不使用环境变量,但没有运气。
现在我应该说我刚开始使用gstreamer并且我正在遭受全部信息过载。我已经阅读了这么多文档,但我甚至不知道我是在构建gstreamer1.0还是gstreamer0.10插件(我认为该指南适用于gstreamer1.0,因为指南的版本是1.7.1.1但是可以'确定)。
谁能在这里给我一个线索?
导致此问题的原因有很多种。
首先,检查您的插件是否被命令gst-inspect-1.0 -b
列入黑名单。如果你的插件出现在这里,那意味着它真的被列入黑名单。
在这种情况下,删除目录~/.cache/
然后再次运行gst-inpect-1.0
。这将迫使GStreamer重新扫描插件列表。如果黑名单的原因尚未解决,gst-inpect
可能会为您打印出原因。
另一个可能的原因(但不太可能发生)是将GST_REGISTRY_UPDATE
设置为no
,这将迫使GStreamer不重新扫描插件目录,因此找不到新的插件
P / s:该指南适用于GStreamer 1.0
如果您已尝试从黑名单中删除插件但仍未显示,请尝试以下操作:
export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0
/usr/local/lib/gstreamer-1.0
是make在插件中使用的默认目录。如果已定义其他目录,请使用它。
然后运行gst-inspect-1.0
,你会发现新编译和安装的插件。
无论是使用export
创建静态管道还是运行自己的代码,都需要每次在shell中执行gst-launch-1.0
。除了在.bashrc文件中输入之外,我找不到任何替代方法使其成为永久性的。如果您有,请通过评论建议。
如果您在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/下,如上面的configure help所述)。
现在在我的机器上,GStreamer“官方”插件安装在:/usr/lib/i386-linux-gnu/gstreamer-1.0/下。这是应该存储新创建的插件库的地方。
要将插件存储在正确的位置,请使用以下参数运行configure:
./configure --libdir=/usr/lib/i386-linux-gnu
紧随其后的是 make && sudo make install
用--libdir和NOT --prefix重写是很重要的!使用--prefix会在/usr/lib/i386-linux-gnu下粘贴一个我们不想要的/ lib。如果将/ lib添加到gst-inspect-1.0,则不会找到插件。路径。
额外注意:即使插件位于正确的位置,您仍然可以在运行gst-inspect-1.0时看到GStreamer将其列入黑名单。黑名单的原因之一可能是未安装或未在您的平台上找到的插件所需的共享库。 ldd
命令可以帮助确定插件可能具有的依赖关系。只需运行ldd [YOUR_GSTREAMER_LIBRARY] .so