我已经安装了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,而仍然是来自插件'播放的解码器。 failes。
我的问题:我如何修复我的gstreamer配置以识别所有插件,而不仅仅是共同点?
如果我跳过一些重要信息,请告诉我,以便我可以尽快添加:)
//编辑: 让我们说我已经从源头安装了gstreamer(我使用的是ubuntu 14.04)。 我也安装了所有插件(底座,包,好),也来自源。 安装目录是/opt/gstreamer-1.4.0/,这可能会导致一些问题。
如果我执行命令:
echo $GST_PLUGINS_PATH
我得到的只是一个空行,当我尝试显示其他GST_ *环境变量的值时效果类似。
更具体的问题:我应该将哪些目录附加到哪些变量以使非辅助插件工作?
如果这个问题过于笼统,那么:
gst_element_factory_find(" factory_name")如何检查给定工厂是否存在?
答案 0 :(得分:1)
不知道我做了什么修复了一切,但是现在我通过将libplayback.so和其他已编译的插件二进制文件复制到libcoreelements.so文件夹来解决我的问题
问题似乎是由非标准安装目录引起的, 所以我的解决方案是一个修补程序,因为我仍然不知道gst-inspect-1.0如何识别所有插件,而gst_element_factory_find()不能。任何进一步的内部将不胜感激:)