2013-10-21 16 views
0

我在Win32 Windows應用程序(而不是控制檯應用程序)中測試gstreamer。我喜歡在我的Win32 Windows應用程序中抓取和顯示「gstreamer」的調試和錯誤消息(通常打印在win32控制檯應用程序中)。我無法在Win32 Windows應用程序中看到它們,我擁有自己的主窗口和多個子窗口(而不是命令提示符)。使用如何在Win32 Windows應用程序中爲GST_ERROR gstreamer調試消息設置處理程序?

g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION, MyfGstGenLogHandle, NULL); 

只在我的「MyfGstGenLogHandle」函數中抓取「應用程序」域日誌消息;這意味着它只抓住例如我自己在自己的代碼中使用了g_debug(...)命令。我想下面的命令來抓取和顯示「的GStreamer」的調試和錯誤信息(例如那些產生而playbin試圖播放媒體):

g_log_set_default_handler(MyfGstGenLogHandle, NULL); 
g_log_set_handler(G_LOG_DOMAIN  , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler(NULL    , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("GStreamer"  , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("GLib-GObject" , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("GLib"   , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("GModule"  , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("GThread"  , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("Gnt"   , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("stderr"   , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("stdout"   , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("Gtk"   , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 
g_log_set_handler("Gdk"   , (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), MyfGstGenLogHandle, NULL); 

到目前爲止沒有這些嘗試的幫我搶在Win32 Windows應用程序中使用gstreamer調試消息,而不使用g_log_set_handler的調試消息通常在命令提示符下打印,如果我將代碼寫入Win32控制檯應用程序。有什麼辦法可以解決這個問題嗎?先謝謝你。

回答

2

GStreamer具有用於重定向日誌的不同API,它的名稱爲​​。

作爲參考,您可以使用我們在android中使用的code將GLib和GStreamer日誌重定向到Android的logcat。