如何从gstreamer检索错误消息? (C API)

时间:2013-06-18 05:33:40

标签: 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(!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_element_set_state时,我的总线回调没有被调用。也许是因为glib主循环尚未运行?

抱歉,我对gstreamer / glib库很新,我在(压倒性的)文档中找不到明确的答案。

1 个答案:

答案 0 :(得分:0)

一种解决方案是设置一个接收消息并检查错误的侦听器。示例:http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-helloworld.html。 (GError是用于错误的数据类型。)