0

Win32 Windows アプリケーションで gstreamer をテストしています (コンソール アプリケーションではありません)。「gstreamer」のデバッグ メッセージとエラー メッセージ (通常は win32 コンソール アプリケーションで出力される) を取得して、Win32 Windows アプリケーションでも表示するのが好きです。独自のメイン ウィンドウといくつかの子ウィンドウ (コマンド プロンプトではない) がある 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 を使用しないデバッグ メッセージがコマンド プロンプトに出力されます。この問題を解決する方法はありますか? 前もって感謝します。

4

1 に答える 1

3

GStreamer には、ログをリダイレクトするための別の API があり、名前はgst_debug_add_log_functionです。

参考までに、Android で使用するコードを使用して、GLib と GStreamer のログを Android の logcat にリダイレクトできます。

于 2013-10-24T15:51:19.010 に答える