GStreamer程序運行時,依照以下順序搜索插件:
每一個環(huán)境變量包括1個路徑列表。 GST_PLUGIN_PATH_1_0環(huán)境變量如果被設(shè)置,則GST_PLUGIN_PATH自動失效。 這為系統(tǒng)同時安裝GStreamer-0.10和GStreamer⑴.0提供了便利。 一樣的, GST_PLUGIN_SYSTEM_PATH_1_0如果被設(shè)置,也會取代GST_PLUGIN_SYSTEM_PATH。
那末既然GST_PLUGIN_PATH和GST_PLUGIN_SYSTEM_PATH都是指代插件的路徑,那為何要設(shè)置兩個類似的環(huán)境變量呢?
答案是GStreamer不會對搜索到的插件重復加載,這樣我們在GST_PLUGIN_PATH里面搜索到某個插件,而這個插件的另外1個版本又在GST_PLUGIN_SYSTEM_PATH里面被搜索到,后1個版本會被疏忽。這樣,我們就能夠使用自已的版本覆蓋到系統(tǒng)安裝的版本。
這樣看來,我們應(yīng)當使用GST_PLUGIN_SYSTEM_PATH指代系統(tǒng)上安裝的GStreamer插件路徑,而使用GST_PLUGIN_PATH指代我們自己開發(fā)的插件。但是實際操作中,其實不需要嚴格界定這些變量所指向的插件路徑的性質(zhì)。 我就常常把系統(tǒng)插件路徑添加到PATH系統(tǒng)變量中。GStreamer一樣可以找到系統(tǒng)插件。
另外需要說明的是,
當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
系統(tǒng)插件目錄,$prefix/libs/gstreamer⑴.0
如果你需要避免GStreamer自動搜索以上路徑,你可以將GST_PLUGIN_SYSTEM_PATH設(shè)置為空!
設(shè)置GST_DEBUG變量可以控制GStreamer運行時的輸出。 GST_DEBUG可以設(shè)置為以下格式:
“模塊名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 環(huán)境變量如果被設(shè)置, 所有Log信息都會被重定位到該變量指定的文件,否則所有信息輸出到標準毛病輸出(stderr).
GStreamer程序啟動的時候會依照指定的路徑搜索插件, 并將插件的信息存入文件系統(tǒng)(緩存)。寄存緩存的文件路徑是
$XDG_CACHE_HOME/gstreamer⑴.0/registry-$ARCH.bin,
當設(shè)置了GST_REGISTRY_1_0 或GST_REGISTRY, 則將緩存存入指定的路徑。
在搜索插件的進程中GStreamer 會比較緩存的有效性,并決定是不是更新緩存。 如果有任何改動,則在初始化函數(shù)的結(jié)尾將新的緩存信息寫入文件系統(tǒng)。