簡體   English   中英

g_signal_connect“添加了鍵盤”不起作用

[英]g_signal_connect “pad-added” doesn't work

我正在嘗試學習如何在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文件。

在相關說明中,請在程序中添加調試代碼,即偵聽總線中的消息。 當某事不起作用時,它會很有幫助。

gstreamer sdk的基本教程3是您要嘗試執行的操作的完美示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM