繁体   English   中英

加载自定义gstreamer插件会引发gst.ElementNotFoundError

[英]loading custom gstreamer plugin raises gst.ElementNotFoundError

我正在尝试在集成测试中加载自定义gstreamer插件之前设置GST_PLUGIN_PATH环境变量,因此我需要以编程方式更改GST_PLUGIN_PATH

但是,如果没有在外壳GST_PLUGIN_PATH设置gst.element_factory_make ,则gst.element_factory_make失败。

我正在使用gstreamer-0.10,python2.6和linux 3.2.0(debian 6)。

例:

import gst, os
os.environ['GST_PLUGIN_PATH'] = '/tmp'
print gst.element_factory_make('myelem')

在shell中GST_PLUGIN_PATH设置GST_PLUGIN_PATH

$ export GST_PLUGIN_PATH=
$ ./gstpathtest.py
Traceback (most recent call last):
  File "./gstpathtest.py", line 7, in <module>
    print gst.element_factory_make('myelem')
gst.ElementNotFoundError: myelem

在外壳中设置了GST_PLUGIN_PATH

$ GST_PLUGIN_PATH=/tmp ./gstpathtest.py
/MyElem:myelem0 (__main__.MyElem)

或在外壳中导出GST_PLUGIN_PATH

$ export GST_PLUGIN_PATH=/tmp
$ ./gstpathtest.py
/MyElem:myelem0 (__main__.MyElem)

当以GST_DEBUG=6运行时,我注意到myelem创建,但立即被未引用和破坏,这可能是错误的原因。

我什至尝试将路径添加到os.environ['PATH'] ,或直接添加到sys.path但没有任何改变。

我的主要问题是:我在python级别上做错了什么(以及究竟是什么),或者它表明myelem插件本身存在一些错误?

噢,愚蠢的我-如果我在导入gst之前设置了os.environ['GST_PLUGIN_PATH'] ,那么一切都会按预期进行。

此外, gst.registry.scan_path可以工作:

import gst
gst.registry_get_default().scan_path('/tmp')
print gst.element_factory_make('myelem')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM