GStreamer程序运行时,依照以下顺序搜索插件:
每一个环境变量包括1个路径列表。 GST_PLUGIN_PATH_1_0环境变量如果被设置,则GST_PLUGIN_PATH自动失效。 这为系统同时安装GStreamer-0.10和GStreamer⑴.0提供了便利。 一样的, GST_PLUGIN_SYSTEM_PATH_1_0如果被设置,也会取代GST_PLUGIN_SYSTEM_PATH。
那末既然GST_PLUGIN_PATH和GST_PLUGIN_SYSTEM_PATH都是指代插件的路径,那为何要设置两个类似的环境变量呢?
答案是GStreamer不会对搜索到的插件重复加载,这样我们在GST_PLUGIN_PATH里面搜索到某个插件,而这个插件的另外1个版本又在GST_PLUGIN_SYSTEM_PATH里面被搜索到,后1个版本会被疏忽。这样,我们就能够使用自已的版本覆盖到系统安装的版本。
这样看来,我们应当使用GST_PLUGIN_SYSTEM_PATH指代系统上安装的GStreamer插件路径,而使用GST_PLUGIN_PATH指代我们自己开发的插件。但是实际操作中,其实不需要严格界定这些变量所指向的插件路径的性质。 我就常常把系统插件路径添加到PATH系统变量中。GStreamer一样可以找到系统插件。
另外需要说明的是,
当GST_PLUGIN_SYSTEM_PATH_1_0和GST_PLUGIN_SYSTEM_PATH均未被定义时, GStreamer会自动将以下路径添加到GST_PLUGIN_SYSTEM_PATH:
用户目录GStreamer插件路径,通常是$XDG_DATA_HOME/gstreamer⑴.0/plugins, $XDG_DATA_HOME默许路径是 $HOME/.local/share
系统插件目录,$prefix/libs/gstreamer⑴.0
如果你需要避免GStreamer自动搜索以上路径,你可以将GST_PLUGIN_SYSTEM_PATH设置为空!
设置GST_DEBUG变量可以控制GStreamer运行时的输出。 GST_DEBUG可以设置为以下格式:
“模块名1: 级别 , 模块名2:级别 , …”
模块名中可使用通配符”*”, 如:
级别 | 名称 | 意义 |
---|---|---|
1 | ERROR | Logs all fatal errors |
2 | WARNING | Logs all warnings |
3 | FIXME | Logs all fixme messages |
4 | INFO | Logs all informational messages |
5 | DEBUG | Logs all debug messages |
6 | LOG | Logs all log messages |
7 | TRACE | Logs all trace messages |
9 | MEMDUMP | Logs all memory dump messages |
GST_DEBUG_FILE 环境变量如果被设置, 所有Log信息都会被重定位到该变量指定的文件,否则所有信息输出到标准毛病输出(stderr).
GStreamer程序启动的时候会依照指定的路径搜索插件, 并将插件的信息存入文件系统(缓存)。寄存缓存的文件路径是
$XDG_CACHE_HOME/gstreamer⑴.0/registry-$ARCH.bin,
当设置了GST_REGISTRY_1_0 或GST_REGISTRY, 则将缓存存入指定的路径。
在搜索插件的进程中GStreamer 会比较缓存的有效性,并决定是不是更新缓存。 如果有任何改动,则在初始化函数的结尾将新的缓存信息写入文件系统。