如何从GStreamer中的应用程序中获取事件?

时间:2012-02-29 07:58:07

标签: c++ linux gstreamer

我将一个事件发送到管道:

GstElement* pipeline = gst_pipeline_new();
GstEvent*  event = gst_event_new_eos();
gst_element_send_event(pipeline, event);

如何管道获取(处理)发送的 eos事件。非常感谢!

2 个答案:

答案 0 :(得分:0)

您需要在GstBus(gst_pipeline_get_bus)上收听GstMessage。当流媒体到达终点时,会发出GST_MESSAGE_EOS。

答案 1 :(得分:0)

如果你只是编写一个应用程序,你不应该关心事件处理过程,因为插件或基本元素库将执行gst_pad_set_event_function()操作,事件句柄函数将处理你发送的事件( GST_EVENT_EOS或其他)。

GStreamer源代码中,您可以看到发送到元素(管道)的事件将推送(通过调用gst_pad_push_event())到填充(src或接收器,具体取决于{{ 1}}的返回值),然后pad判断事件是否为其,如果不是,则将if发送给对等垫。

这对你有用吗?