在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,但那个问题并没有完全回答我的问题。
答案 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);