您的位置:首页 > 其它

GStreamer 1.0 运行时环境变量设置

2015-03-04 16:38 1821 查看

插件搜索路径

GStreamer程序运行时,按照以下顺序搜索插件:

PATH

GST_PLUGIN_PATH_1_0GST_PLUGIN_PATH

GST_PLUGIN_SYSTEM_PATH_1_0GST_PLUGIN_SYSTEM_PATH

每个环境变量包含一个路径列表。 GST_PLUGIN_PATH_1_0环境变量如果被设置,则GST_PLUGIN_PATH自动失效。 这为系统同时安装GStreamer-0.10和GStreamer-1.0提供了便利。 同样的, GST_PLUGIN_SYSTEM_PATH_1_0如果被设置,也会取代GST_PLUGIN_SYSTEM_PATH

那么既然GST_PLUGIN_PATHGST_PLUGIN_SYSTEM_PATH都是指代插件的路径,那为什么要设置两个相似的环境变量呢?

答案是GStreamer不会对搜索到的插件重复加载,这样我们在GST_PLUGIN_PATH里面搜索到某个插件,而这个插件的另外一个版本又在GST_PLUGIN_SYSTEM_PATH里面被搜索到,后一个版本会被忽略。这样,我们就可以使用自已的版本覆盖到系统安装的版本。

这样看来,我们应该使用GST_PLUGIN_SYSTEM_PATH指代系统上安装的GStreamer插件路径,而使用GST_PLUGIN_PATH指代我们自己开发的插件。但是实际操作中,并不需要严格界定这些变量所指向的插件路径的性质。 我就常常把系统插件路径添加到PATH系统变量中。GStreamer同样可以找到系统插件。

另外需要说明的是,

GST_PLUGIN_SYSTEM_PATH_1_0GST_PLUGIN_SYSTEM_PATH均未被定义时, GStreamer会自动将以下路径添加到GST_PLUGIN_SYSTEM_PATH

用户目录GStreamer插件路径,通常是$XDG_DATA_HOME/gstreamer-1.0/plugins, $XDG_DATA_HOME默认路径是 $HOME/.local/share

系统插件目录,$prefix/libs/gstreamer-1.0

如果你需要避免GStreamer自动搜索以上路径,你可以将GST_PLUGIN_SYSTEM_PATH设置为空!

Debug输出

设置GST_DEBUG变量可以控制GStreamer运行时的输出。 GST_DEBUG可以设置为如下格式:

“模块名1: 级别 , 模块名2:级别 , …”

模块名中可以使用通配符”*”, 如:

“*: 1“: 表示所有模块输出级别1

“GST_ELEMENT_:4*”: 表示所有以”GST_ELEMENT_“开头的模块输出级别为4

级别名称意义
1ERRORLogs all fatal errors
2WARNINGLogs all warnings
3FIXMELogs all fixme messages
4INFOLogs all informational messages
5DEBUGLogs all debug messages
6LOGLogs all log messages
7TRACELogs all trace messages
9MEMDUMPLogs all memory dump messages
FIXME: 这类消息表示执行的某段代码尚未完全实现或需要更多的关注。

INFO: 记录只发生一次,或者比较重要,或者不常见的事件消息。

DEBUG: 记录发生有限次数的事件消息,比如setup, teardown, 参数变化…

LOG: 记录重复发生的事件,如streaming…

TRACE:记录重复发生的事件, 如ref/unref

GST_DEBUG_FILE 环境变量如果被设置, 所有Log信息都会被重定位到该变量指定的文件,否则所有信息输出到标准错误输出(stderr).

Registry 缓存

GStreamer程序启动的时候会按照指定的路径搜索插件, 并将插件的信息存入文件系统(缓存)。存放缓存的文件路径是

$XDG_CACHE_HOME/gstreamer-1.0/registry-$ARCH.bin,

当设置了GST_REGISTRY_1_0 或者GST_REGISTRY, 则将缓存存入指定的路径。

在搜索插件的过程中GStreamer 会比较缓存的有效性,并决定是否更新缓存。 如果有任何改动,则在初始化函数的结尾将新的缓存信息写入文件系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gstreamer