我正在尝试通过 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 库还很陌生,在(压倒性的)文档中找不到明确的答案。