Events Gstremer事件

Events Gstremer事件,events,gstreamer,Events,Gstreamer,我在理解Gstreamer中的事件是如何工作的方面有点困难。我知道您可以将事件从应用程序传递到元素,以结束流或阻止pad等,但当我查看中的示例代码时,似乎程序没有发送任何特定事件,只是通过探测来侦听它们。如果程序只是通过探测监听事件,那么这些事件必须在某些事情发生后以某种方式在元素之间自动发送。然而,我找不到任何关于这方面的信息。事件在Gstreamer中是如何工作的?有关Gstreamer事件设计的更多信息可以在此处找到()。本文档描述了各种事件如何通过管道传播 在提供的示例代码中,EOS事件

我在理解Gstreamer中的事件是如何工作的方面有点困难。我知道您可以将事件从应用程序传递到元素,以结束流或阻止pad等,但当我查看中的示例代码时,似乎程序没有发送任何特定事件,只是通过探测来侦听它们。如果程序只是通过探测监听事件,那么这些事件必须在某些事情发生后以某种方式在元素之间自动发送。然而,我找不到任何关于这方面的信息。事件在Gstreamer中是如何工作的?

有关Gstreamer事件设计的更多信息可以在此处找到()。本文档描述了各种事件如何通过管道传播

在提供的示例代码中,EOS事件通过以下函数发送到元素:
gst\u pad\u send\u事件(下沉、gst\u事件\u new\u eos())
然后,元素继续刷新其所有缓冲区,并通过在其src pad上发布事件,将EOS事件转发到下游的下一个元素。此事件继续通过元素,直到到达已安装的探测器,该探测器包含特殊逻辑,以便在接收到EOS事件时操纵管道

此示例显示了与您的问题相关的几个方面: -事件本质上是在gstreamer管道中处理的。gstreamer元素会自动处理它们。 -当事件通过管道传播时,Pad探测器可用于外部观察/修改事件。
-可以使用函数
gst\u pad\u send\u event
gst\u element\u send\u event

将事件直接插入管道中,但是,在我发布链接的示例代码中,我看不到事件消息何时发送?这确实是我的问题,元素何时以及为什么在彼此之间发送事件消息?它们是自动发送还是用户必须一直发送消息?事件可以由元素本身(自动)发送,也可以由用户发送。如果您真的对查看发布的每个事件感兴趣,可以将gstreamer的日志级别设置为debug并查看输出日志。但是,在元素上放置几个焊盘探针并以这种方式查看事件可能更容易。谢谢您的回答。它只是有点恼人,它没有在任何地方写它们也是由元素本身自动发送的。链接中的东西也很好,非常感谢。