如何在Win32 Windows应用程序中为GST_ERROR gstreamer调试消息设置处理程序?

时间:2013-10-21 12:00:53

标签: gstreamer

我正在Win32 Windows应用程序中测试gstreamer(而不是在控制台应用程序中)。我喜欢在我的Win32 Windows应用程序中抓取并显示“gstreamer”的调试和错误消息(通常在win32控制台应用程序中打印)。我在Win32 Windows应用程序中看不到它们,我有自己的主窗口和几个子窗口(而不是命令提示符)。使用

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调试消息,而如果我在Win32控制台应用程序中编写代码,则通常在命令提示符下打印不使用g_log_set_handler的调试消息。有什么方法可以解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

GStreamer有一个不同的API用于重定向日志,它名为gst_debug_add_log_function

作为参考,您可以使用我们在android中使用的code将GLib和GStreamer日志重定向到Android的logcat。