我正在尝试在集成测试中加载自定义gstreamer插件之前设置GST_PLUGIN_PATH
环境变量,因此我需要以编程方式更改GST_PLUGIN_PATH
。
但如果在shell中未设置GST_PLUGIN_PATH
,则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
:
$ 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
在shell中设置GST_PLUGIN_PATH
:
$ GST_PLUGIN_PATH=/tmp ./gstpathtest.py
/MyElem:myelem0 (__main__.MyElem)
或在shell中导出GST_PLUGIN_PATH
:
$ export GST_PLUGIN_PATH=/tmp
$ ./gstpathtest.py
/MyElem:myelem0 (__main__.MyElem)
当使用GST_DEBUG=6
运行时,我注意到myelem
已创建,但会立即取消并销毁,这可能是导致错误的原因。
我甚至尝试将路径添加到os.environ['PATH']
,或直接添加到sys.path
,但它没有改变任何内容。
我的主要问题是:我在 python-level 上做错了什么(以及究竟是什么)或是否表示 myelem 插件本身存在一些错误?
答案 0 :(得分:0)
哦,愚蠢的我 - 如果我在导入os.environ['GST_PLUGIN_PATH']
之前设置gst
,一切都按预期工作。
答案 1 :(得分:0)
此外,gst.registry.scan_path
有效:
import gst
gst.registry_get_default().scan_path('/tmp')
print gst.element_factory_make('myelem')