什么是'导出GST_DEBUG =<#>'相当于Android?

时间:2014-05-08 19:01:12

标签: android gstreamer

在Linux系统上,我使用过'导出GST_DEBUG =<#>'调试程序使用GStreamer的问题。我现在正在使用Android并希望这样做 - 请参阅logcat输出中包含的GStreamer输出。

我有一台谷歌Nexus 5手机,我使用的是full_hammerhead_userdebug版本。我已经看到以下建议:

Add the following in JNI_OnLoad:
setenv("GST_DEBUG", "*:5", 1);
setenv("GST_DEBUG_NO_COLOR", "1", 1);

不幸的是我试图调试C库,所以我更愿意在环境中设置一些东西以启用调试输出。我尝试将以下行添加到build.prop:

export GST_DEBUG=3
GST_DEBUG=3
log.redirect-stdio=true

那不起作用。要么我没有正确启用GST_DEBUG,要么我没有正确地重定向它。或者我偏离轨道,我应该做其他事情。如何在Android中启用GST_DEBUG?

P.S。这个问题类似于one,但那个问题并没有完全回答我的问题。

1 个答案:

答案 0 :(得分:3)

我最后朝另一个方向去解决这个问题。首先,我创建了自己的GstLogFunction()

void gstAndroidLog(GstDebugCategory * category, 
                   GstDebugLevel      level, 
                   const gchar      * file, 
                   const gchar      * function, 
                   gint               line, 
                   GObject          * object, 
                   GstDebugMessage  * message, 
                   gpointer           data)
{
  if (level <= gst_debug_category_get_threshold (category))
  {
    __android_log_print(ANDROID_LOG_ERROR, "MY_APP", "%s,%s: %s",
                        file, function, gst_debug_message_get(message)); 
  }
} 

然后在调用gst_init()之后,我设置了日志级别。如果我想看到一切,我可以设置:

gst_debug_set_default_threshold( GST_LEVEL_DEBUG );

如果我只想查看特定类别中发生的事情,我可以设置:

gst_debug_set_threshold_for_name ("tcpclientsink", GST_LEVEL_LOG);

然后我只需要注册我创建的日志功能:

gst_debug_add_log_function(&gstAndroidLog, NULL);