gpt4 book ai didi

c - g_signal_connect "pad-added"不起作用

转载 作者:行者123 更新时间:2023-11-30 15:41:05 26 4
gpt4 key购买 nike

我正在尝试学习如何在 gstreamer 中使用动态垫。因此,我尝试添加填充添加信号,以便在创建元素后我可以收到消息。但是,我没有收到任何消息。

这是代码:

#include <gst/gst.h>

static void
cb_new_pad (GstElement *element,
GstPad *pad,
gpointer data)
{
gchar *name;

name = gst_pad_get_name (pad);
g_print ("A new pad %s was created\n", name);
g_free (name);

/* here, you would setup a new pad link for the newly created pad */

}
int
main (int argc,
char *argv[])
{
GstElement *pipeline, *source, *demux;
GMainLoop *loop;

/* init */
gst_init (&argc, &argv);
/* create elements */
pipeline = gst_pipeline_new ("my_pipeline");
source = gst_element_factory_make ("filesrc", "source");
g_object_set (source, "location", argv[1], NULL);
demux = gst_element_factory_make ("oggdemux", "demuxer");

/* put together a pipeline */
gst_bin_add_many (GST_BIN (pipeline), source, demux, NULL);
gst_element_link_pads (source, "src", demux, "sink");

/* listen for newly created pads */
g_signal_connect (demux, "pad-added", G_CALLBACK (cb_new_pad), NULL);

/* start the pipeline */
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);

}

那么问题出在哪里呢? (顺便说一下,我使用的是 gstreamer 1.2.1

最佳答案

你的代码对我来说工作得很好。

您的解复用器可能无法对流进行解复用,请检查您提供的输入文件。它可能不是有效的 ogg 文件。

在相关说明中,请向您的程序添加调试代码,即监听总线的消息。当某些事情不起作用时,它会很有帮助。

basic tutorial 3 gstreamer sdk 的 是您想要做的事情的完美示例。

关于c - g_signal_connect "pad-added"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20672500/

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