我创建了主要的下一个元素,我试图将它们链接到播放视频,但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的发布是透明的。