HI, I'm trying to build the following pipeline with a C application : gst-launch -e udpsrc port=5000 caps="application/x-rtp, media=video, encoding-name=MP2T-ES" ! rtpmp2tdepay ! mpegtsdemux ! filesink location=videodstRDO.mpeg
when using gst-launch it works fine, but when I use a C application here is the error I get (with GST_DEBUG=3) : 0:00:00.032693078 12164 0x1912010 INFO GST_ELEMENT_PADS gstutils.c:1698:gst_element_link_pads_full: trying to link element tsdemux:(any) to element mpeg2dec:(any) 0:00:00.032735773 12164 0x1912010 INFO GST_ELEMENT_PADS gstelement.c:972:gst_element_get_static_pad: no such pad 'video_%04x' in element "tsdemux" 0:00:00.032759563 12164 0x1912010 INFO GST_ELEMENT_PADS gstutils.c:1216:gst_element_get_compatible_pad:<tsdemux> Could not find a compatible pad to link to mpeg2dec:sink here is the code I wrote : ... source = gst_element_factory_make ("udpsrc", "rtpsrc"); rtpdepay = gst_element_factory_make ("rtpmp2tdepay", "rtpdepay"); tsdemux = gst_element_factory_make ("mpegtsdemux", "tsdemux"); sink = gst_element_factory_make ("filesink", "filesink"); g_object_set (source, "port", 5000, NULL);
/* we need to set caps on the udpsrc for the RTP data */ caps = gst_caps_from_string ("application/x-rtp, media=video, encoding-name=MP2T-ES"); g_object_set (source, "caps", caps, NULL); gst_caps_unref (caps); /* build pipeline */ gst_bin_add_many (GST_BIN (pipeline), source, rtpdepay, tsdemux, sink, NULL); if(!gst_element_link_many (source, rtpdepay, tsdemux, sink, NULL)) { g_printerr ("Could not link pipeline. \n"); return -1; } when I execute the application, the call to gst_element_link_many fails and the program exit with my error msg.
Do you know what might be wrong ? thanks, Max Maxime Louvel web page : https://sites.google.com/site/mlouvel/ linkedin : http://fr.linkedin.com/in/mlouvel address : 5400-B ridge oak drive Austin, Texas, 78731 USA
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi Maxime,
For mpegtsdemux, you can't link the src pads until they are added. This happens during runtime so you'll need to add a signal handler on the pad-added signal from the mpegtsdemux element. Take a look at section 8.1 of the documentation (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-pads.html) for an example on how this is done. Section 8.1.1 uses oggdemux but the method is the same. In your callback, you can link your pad there. Pay attention to the caps since you don't until later if it's an audio or video track. HTH, Emile -- Emile Semmes Software Consultant e6 Group, LLC Office: (630) 376-0626 www.e6group.com On 5/22/2012 8:56 AM, Maxime Louvel wrote:
-- -- Emile Semmes Owner / Software Consultant e6 Group, LLC Office: (630) 376-0626 www.e6group.com _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
thanks Emile, it works On Wed, May 23, 2012 at 12:39 PM, Emile Semmes <[hidden email]> wrote:
-- Maxime Louvel web page : https://sites.google.com/site/mlouvel/ linkedin : http://fr.linkedin.com/in/mlouvel address : 5400-B ridge oak drive Austin, Texas, 78731 USA _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |