gpt4 book ai didi

c - GStreamer - 向元素发出信号

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:07 25 4
gpt4 key购买 nike

我有一个写入 C 程序的管道,它将视频流从标准输入重定向到多个 UDP 客户端。我希望动态添加或删除这些客户端,因此无法在编译时定义它们中的哪些以及将有多少。这是我的管道(如果我添加一个固定的 clients 参数它工作正常):

fdsrc name=origin \
! video/x-h264,width=320,height=240,framerate=30/1,profile=baseline,stream-format=avc,alignment=au \
! h264parse \
! rtph264pay \
config-interval=1 \
pt=96 \
! multiudpsink name=dest \
sync=false

根据 GStreamer 文档,我可以通过发送信号来动态添加或删除客户端来实现它。在这种情况下,它应该是 add signal .

但我找不到任何有关向元素发送信号(在本例中为 multiudpsink 元素)的信息。很容易获得对我的元素的引用:

GstElement *sink = gst_bin_get_by_name(GST_BIN(pipeline), "dest");
/* TODO: send a signal to add a client */
g_object_unref(sink);

但是现在我怎样才能向那个元素发出信号呢?

最佳答案

我终于明白了。使用g_signal_emit_by_name您可以向任何 GStreamer 元素发送消息。

代码如下:

GstElement *sink = gst_bin_get_by_name(GST_BIN(pipeline), "dest");
g_signal_emit_by_name(sink, "add", "192.168.1.25", 5004, NULL);
g_object_unref(sink);

感谢 Tim Müller,来自 GStreamer-devel 邮件列表,他给了我 right example关于如何进行。

关于c - GStreamer - 向元素发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com