1

我试图GST_PLUGIN_PATH在集成测试中加载自定义 gstreamer 插件之前设置环境变量,所以我需要以GST_PLUGIN_PATH编程方式进行更改。

但是如果没有GST_PLUGIN_PATH在 shell 中设置,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')

没有GST_PLUGIN_PATH在 shell 中设置:

$ 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_PATHshell 中设置:

$ 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插件本身存在一些错误?

4

2 回答 2

0

哦,愚蠢的我 - 如果我os.environ['GST_PLUGIN_PATH']在导入之前设置gst,一切都会按预期工作。

于 2013-07-09T15:18:55.430 回答
0

此外,gst.registry.scan_path作品:

import gst
gst.registry_get_default().scan_path('/tmp')
print gst.element_factory_make('myelem')
于 2013-07-09T15:33:16.533 回答