我在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控制檯應用程序。有什麼辦法可以解決這個問題嗎?先謝謝你。