GStreamer Debugging 參數說明
[GStreamer] 是一個優異的多媒體處理元件 Library,其架構了最先進的多媒體資料流機制,在目前主流的 Linux 系統中,應用極為廣範。GStreamer 支援以 Plugin 的形態擴充自身功能,可以是編解碼器(Encoder/Decoder),亦或是效果處理(Processing),因此,有許多生產硬體解碼晶片的廠商,都會透過提供 Gstreamer Plugin 的方式,支援 Linux 上的多媒體播放。說到多媒體架構,或許讀者也曾聽過 OpenCore/OpenMax,其實 Gstreamer 和 OpenCore 兩者是相類似的東西,只是前者主要被應用在桌面系統居多,後者則常見於嵌入式系統(Embedded System)應用,最廣為人知的便是 Android Multimedia Framework。在此,細節就不多談,本文將要探討 GStreamer Debugging 的一些手段。
如果曾開發過 GStreamer Application,對初始化 GStreamer Backend 應該很熟悉:
我們可以理解所有的 GStreamer Application,都會經過這段 Initialization 的動作,因此 gst_init() 會從 main() 得到程式被執行時所代入的後綴參數,換言之,理論上不管是什麼 Application ,我們可以透過這種方式去開啟 GStreamer 的 Debug 模式:
參考 GStreamer 官方文件,會發現有數種參數可以使用:
References
GStreamer Application Development Manual:
http://www.gstreamer.net/data/doc/gstreamer/head/manual/html/section-checklist-debug.html
如果曾開發過 GStreamer Application,對初始化 GStreamer Backend 應該很熟悉:
gst_init(&argc, &argv);
我們可以理解所有的 GStreamer Application,都會經過這段 Initialization 的動作,因此 gst_init() 會從 main() 得到程式被執行時所代入的後綴參數,換言之,理論上不管是什麼 Application ,我們可以透過這種方式去開啟 GStreamer 的 Debug 模式:
$ ./totem --gst-debug-level=3 0:00:00.003322140 13127 0x8c530a0 INFO GST_INIT gstquery.c:105:_gst_query_initialize: init queries 0:00:00.004700946 13127 0x8c530a0 INFO GST_INIT gstmessage.c:73:_gst_message_initialize: init messages 0:00:00.005529752 13127 0x8c530a0 INFO GST_PLUGIN_LOADING gstplugin.c:348:_gst_plugin_initialize: registering 0 static plugins 0:00:00.005766514 13127 0x8c530a0 INFO GST_PLUGIN_LOADING gstplugin.c:254:gst_plugin_register_static: registered static plugin "staticelements" 0:00:00.005795498 13127 0x8c530a0 INFO GST_PLUGIN_LOADING gstplugin.c:256:gst_plugin_register_static: added static plugin "staticelements", result: 1 0:00:00.006600699 13127 0x8c530a0 INFO GST_REGISTRY gstregistry.c:1586:ensure_current_registry: reading registry cache: /home/fred/.gstreamer-0.10/registry.i486.bin 0:00:00.029082746 13127 0x8c530a0 INFO GST_REGISTRY gstregistrybinary.c:601:gst_registry_binary_read_cache: loaded /home/fred/.gstreamer-0.10/registry.i486.bin in 0.022431 seconds 0:00:00.029188137 13127 0x8c530a0 INFO GST_REGISTRY gstregistry.c:1446:scan_and_update_registry: Validating plugins from registry cache: /home/fred/.gstreamer-0.10/registry.i486.bin 0:00:00.031259140 13127 0x8c530a0 INFO GST_REGISTRY gstregistry.c:1548:scan_and_update_registry: Registry cache has not changed 0:00:00.031292035 13127 0x8c530a0 INFO GST_REGISTRY gstregistry.c:1615:ensure_current_registry: registry reading and updating done, result = 1 0:00:00.031311032 13127 0x8c530a0 INFO GST_INIT gst.c:786:init_post: GLib runtime version: 2.24.1 0:00:00.031331007 13127 0x8c530a0 INFO GST_INIT gst.c:788:init_post: GLib headers version: 2.24.1 ... 以下省略
參考 GStreamer 官方文件,會發現有數種參數可以使用:
- --gst-debug-level=LEVEL
設定 Debug 級別,LEVEL 範圍從 0 (不輸出訊息) 到 5 (輸出所有訊息)
- --gst-debug=LIST
要求特定的 Plugin 所 Debug 訊息輸出,亦可以分別設定不同 plugin 有的不同 Debug 級別,格式範例:
--gst-debug=GST_AUTOPLUG:5,avidemux:3
- --gst-plugin-spew
輸出 Plugin 載入的錯誤訊息
References
GStreamer Application Development Manual:
http://www.gstreamer.net/data/doc/gstreamer/head/manual/html/section-checklist-debug.html
留言
張貼留言