如何从gstreamer检索错误消息?(C)空气污染指数

如何从gstreamer检索错误消息?(C)空气污染指数,gstreamer,glib,Gstreamer,Glib,我正在尝试通过C API初始化gstreamer管道。代码与此类似: [...] pipeline = (GstPipeline*)gst_pipeline_new(nullptr); if(!pipeline) { //error return; } [...] sink = gst_element_factory_make("autoaudiosink", nullptr); if(!sink) { //error return; } if(!

我正在尝试通过C API初始化gstreamer管道。代码与此类似:

[...]

pipeline = (GstPipeline*)gst_pipeline_new(nullptr);
if(!pipeline) {
    //error
    return;
}

[...]

sink     = gst_element_factory_make("autoaudiosink", nullptr);
if(!sink) {
    //error
    return;
}

if(!gst_bin_add((GstBin*)pipeline, sink)) {
    //error
    return;
}

[...]

GstBus* bus = gst_pipeline_get_bus(pipeline);
gst_bus_add_watch(bus, (GstBusFunc)bus_callback, this);
gst_object_unref(bus);

GstStateChangeReturn state = gst_element_set_state((GstElement*)pipeline, GST_STATE_PLAYING);

if(!state) {
    //error2
    return;
}
[...]
虽然错误出现在cout中,但我希望以C字符串(或我可以处理的任何格式)的形式检索错误。我该怎么做

我已经读到错误被发布到管道的总线上,但是当调用gst_元素_set_状态时,我的总线回调没有被调用。可能是因为glib主循环尚未运行


抱歉,我对gstreamer/glib库非常陌生,在(大量的)文档中找不到明确的答案。

一个解决方案是设置一个侦听器来接收消息并检查错误。示例:。(GError是用于错误的数据类型。)