我创建了主要的下一个元素,我试图将它们链接到播放视频,但gst_element_link_many的结果总是错误的。

GstElement *pipeline, *videosrc, *videoenc, *muxer, *sink;
 pipeline = gst_pipeline_new ("video-player");
  videosrc = gst_element_factory_make ("filesrc", "videosrc");
  muxer = gst_element_factory_make ("qtdemux", "mux");
  videoenc = gst_element_factory_make ("avdec_mpeg4", "videoenc");
  sink = gst_element_factory_make ("autovideosink", "sink");

 g_object_set (G_OBJECT (videosrc), "location", argv[1], NULL);
 gst_bin_add_many (GST_BIN (pipeline), videosrc, muxer, videoenc, sink, NULL);

  /* link the elements together */
  int resLinkMany = gst_element_link_many (videosrc, muxer, videoenc, sink, NULL);

  printf(" resLinkMany = %d \n", resLinkMany); //I get 0

一般来说,我试图启动视频,但它没有工作,因为不正确的链接。这是我的程序的完整代码:https://pastebin.com/BER1BZDU

最佳答案

这是一个常见的错误-从gst-inspect-1.0 qtdemux可以看出src焊盘是“有时”焊盘。您需要使用“pad added”信号才能链接到它们。GST的发布是透明的。

10-08 12:32