<div dir="ltr"><div>Hey, </div><div><br></div>You're not adding the rstpsrc to the pipeline. You need to add the rtspsrc to the pipeline, set the pipeline to play and only then add and link the remainder elements once the rtspsrc source pads are created. If you try to set the pipeline to play with elements unlinked it will fail to transition to play. <div><br></div><div>Cheers, </div><div>Sérgio </div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-03-02 22:37 GMT+01:00 Francisco Velázquez <span dir="ltr"><<a href="mailto:francisv@ifi.uio.no" target="_blank">francisv@ifi.uio.no</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">Hello,</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br></span></div><div style="margin:0px">I am trying to create a rtsp client using the rtspsrc element, but I’m failing to have it working. The problem I see is that the “pad-added” signal is never triggered. The code is:</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#include <span style="color:#d12f1b"><stdio.h></span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#78492a">#include </span><gst/gst.h></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#78492a">#include </span><string.h></div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">GST_DEBUG_CATEGORY_STATIC<span style="color:#000000"> (my_category);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define GST_CAT_DEFAULT my_category</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">/* Structure to contain all our information, so we can pass it around */</div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="color:#bb2ca2">typedef</span> <span style="color:#bb2ca2">struct</span> _CustomData{</div><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#703daa">GMainLoop</span> *main_loop;</div><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#703daa">GstElement</span> *pipeline, *rtspsrc, *rtpamrdepay, *amrnbdec, *pulsesink, *rtpvp8depay, *vp8dec, *videoconvert, *ximagesink;</div><div style="margin:0px;font-size:11px;font-family:Menlo">}CustomData;</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="color:#bb2ca2">static</span> <span style="color:#bb2ca2">void</span> new_pad_cb (<span style="color:#703daa">GstElement</span> *rtspsrc, <span style="color:#703daa">GstPad</span>* pad, <span style="color:#4f8187">CustomData</span> *data){</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">  </span><span style="color:#78492a">GST_INFO</span><span style="color:#000000">(</span>"New pad in rtspsrc added!"<span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#703daa">gchar</span> *dynamic_pad_name;</div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo">  dynamic_pad_name = <span style="color:#78492a">gst_pad_get_name</span> (pad);</div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#bb2ca2">if</span>(<span style="color:#3d1d81">gst_element_link_pads</span>(data-><span style="color:#4f8187">rtspsrc</span>, dynamic_pad_name, data-><span style="color:#4f8187">rtpamrdepay</span>, <span style="color:#d12f1b">"sink"</span>)){</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">    </span><span style="color:#78492a">GST_INFO</span><span style="color:#000000">(</span>"Pad for audio linked"<span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo">    <span style="color:#3d1d81">g_free</span> (dynamic_pad_name);</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(187,44,162)"><span style="color:#000000">    </span>return<span style="color:#000000">;</span></div><div style="margin:0px;font-size:11px;font-family:Menlo">  }</div><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#bb2ca2">else</span> <span style="color:#bb2ca2">if</span>(<span style="color:#3d1d81">gst_element_link_pads</span>(data-><span style="color:#4f8187">rtspsrc</span>, dynamic_pad_name, data-><span style="color:#4f8187">rtpvp8depay</span>, <span style="color:#d12f1b">"sink"</span>)){</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">    </span><span style="color:#78492a">GST_INFO</span><span style="color:#000000">(</span>"Pad for video linked"<span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo">    <span style="color:#3d1d81">g_free</span> (dynamic_pad_name);</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(187,44,162)"><span style="color:#000000">    </span>return<span style="color:#000000">;</span></div><div style="margin:0px;font-size:11px;font-family:Menlo">  }</div><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#3d1d81">g_free</span> (dynamic_pad_name);</div><div style="margin:0px;font-size:11px;font-family:Menlo">}</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="color:#bb2ca2">int</span> main (<span style="color:#bb2ca2">int</span> argc, <span style="color:#bb2ca2">char</span> *argv[]){</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:#000000">  </span>/* Initialize our data structure */</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(79,129,135)"><span style="color:#000000">  </span>CustomData<span style="color:#000000"> data;</span></div><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#78492a">memset</span> (&data, <span style="color:#272ad8">0</span>, <span style="color:#bb2ca2">sizeof</span> (data));</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo">  <span style="color:#3d1d81">gst_init</span> (&argc, &argv);</div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">  </span><span style="color:#78492a">GST_DEBUG_CATEGORY_INIT</span><span style="color:#000000"> (</span><span style="color:#4f8187">my_category</span><span style="color:#000000">, </span>"my_code"<span style="color:#000000">, </span><span style="color:#272ad8">0</span><span style="color:#000000">, </span>"This is the debug category for my code."<span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:#000000">  </span>/* Generic elements */</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  data.</span><span style="color:#4f8187">pipeline</span><span style="color:#000000"> = </span>gst_pipeline_new<span style="color:#000000">(</span><span style="color:#d12f1b">"pipeline"</span><span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  data.</span><span style="color:#4f8187">rtspsrc</span><span style="color:#000000"> = </span>gst_element_factory_make<span style="color:#000000">(</span><span style="color:#d12f1b">"rtspsrc"</span><span style="color:#000000">, </span><span style="color:#d12f1b">"rtspsrc"</span><span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><b><span style="color:rgb(0,0,0)">  </span>/* listen for newly created pads in rtpbin */</b></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)"><b><span style="color:#000000">  </span>g_signal_connect<span style="color:#000000"> (data.</span><span style="color:#4f8187">rtspsrc</span><span style="color:#000000">, </span><span style="color:#d12f1b">"pad-added"</span><span style="color:#000000">, </span>G_CALLBACK<span style="color:#000000"> (</span><span style="color:#31595d">new_pad_cb</span><span style="color:#000000">), &data);</span></b></div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">  </span><span style="color:#3d1d81">g_object_set</span><span style="color:#000000">(</span><span style="color:#78492a">G_OBJECT</span><span style="color:#000000"> (data.</span><span style="color:#4f8187">rtspsrc</span><span style="color:#000000">), </span>"location"<span style="color:#000000">, </span>"<a>rtsp://127.0.0.1:8554/test</a>"<span style="color:#000000">, </span><span style="color:#bb2ca2">NULL</span><span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:#000000">  </span>/* Audio elements */</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">  data.</span><span style="color:#4f8187">rtpamrdepay</span><span style="color:#000000"> = </span><span style="color:#3d1d81">gst_element_factory_make</span><span style="color:#000000">(</span>"rtpamrdepay"<span style="color:#000000">, </span>"rtpamrdepay"<span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  data.</span><span style="color:#4f8187">amrnbdec</span><span style="color:#000000"> = </span>gst_element_factory_make<span style="color:#000000">(</span><span style="color:#d12f1b">"amrnbdec"</span><span style="color:#000000">, </span><span style="color:#d12f1b">"amrnbdec"</span><span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  data.</span><span style="color:#4f8187">pulsesink</span><span style="color:#000000"> = </span>gst_element_factory_make<span style="color:#000000">(</span><span style="color:#d12f1b">"pulsesink"</span><span style="color:#000000">, </span><span style="color:#d12f1b">"pulsesink"</span><span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:#000000">  </span>/* Video elements */</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">  data.</span><span style="color:#4f8187">rtpvp8depay</span><span style="color:#000000"> = </span><span style="color:#3d1d81">gst_element_factory_make</span><span style="color:#000000">(</span>"rtpvp8depay"<span style="color:#000000">, </span>"rtpvp8depay"<span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  data.</span><span style="color:#4f8187">vp8dec</span><span style="color:#000000"> = </span>gst_element_factory_make<span style="color:#000000">(</span><span style="color:#d12f1b">"vp8dec"</span><span style="color:#000000">, </span><span style="color:#d12f1b">"vp8dec"</span><span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span style="color:#000000">  data.</span><span style="color:#4f8187">videoconvert</span><span style="color:#000000"> = </span><span style="color:#3d1d81">gst_element_factory_make</span><span style="color:#000000">(</span>"videoconvert"<span style="color:#000000">, </span>"videoconvert"<span style="color:#000000">);</span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  data.</span><span style="color:#4f8187">ximagesink</span><span style="color:#000000"> = </span>gst_element_factory_make<span style="color:#000000">(</span><span style="color:#d12f1b">"ximagesink"</span><span style="color:#000000">, </span><span style="color:#d12f1b">"ximagesink"</span><span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(79,129,135)"><span style="color:#000000">  </span><span style="color:#3d1d81">gst_bin_add_many</span><span style="color:#000000">(</span><span style="color:#78492a">GST_BIN</span><span style="color:#000000">(data.</span>pipeline<span style="color:#000000">), data.</span>rtpamrdepay<span style="color:#000000">, data.</span>amrnbdec<span style="color:#000000">, data.</span>pulsesink<span style="color:#000000">, data.</span>rtpvp8depay<span style="color:#000000">, data.</span>vp8dec<span style="color:#000000">, data.</span>videoconvert<span style="color:#000000">, data.</span>ximagesink<span style="color:#000000">, </span><span style="color:#bb2ca2">NULL</span><span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:#000000">  </span>/* Linking audio elements */</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(79,129,135)"><span style="color:#000000">  </span><span style="color:#3d1d81">gst_element_link_many</span><span style="color:#000000">(data.</span>rtpamrdepay<span style="color:#000000">, data.</span>amrnbdec<span style="color:#000000">, data.</span>pulsesink<span style="color:#000000">, </span><span style="color:#bb2ca2">NULL</span><span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:#000000">  </span>/* Linding video elements */</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(79,129,135)"><span style="color:#000000">  </span><span style="color:#3d1d81">gst_element_link_many</span><span style="color:#000000">(data.</span>rtpvp8depay<span style="color:#000000">, data.</span>vp8dec<span style="color:#000000">, data.</span>videoconvert<span style="color:#000000">, data.</span>ximagesink<span style="color:#000000">, </span><span style="color:#bb2ca2">NULL</span><span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  </span>gst_element_set_state<span style="color:#000000">(data.</span><span style="color:#4f8187">pipeline</span><span style="color:#000000">, </span>GST_STATE_PLAYING<span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)"><span style="color:#000000">  </span>GST_DEBUG_BIN_TO_DOT_FILE<span style="color:#000000"> (</span>GST_BIN<span style="color:#000000"> (data.</span><span style="color:#4f8187">pipeline</span><span style="color:#000000">), </span><span style="color:#3d1d81">GST_DEBUG_GRAPH_SHOW_ALL</span><span style="color:#000000"> ,</span><span style="color:#d12f1b">"rtcp_client"</span><span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span style="color:#000000">  </span>/* Create a GLib Main Loop and set it to run */</div><div style="margin:0px;font-size:11px;font-family:Menlo">  data.<span style="color:#4f8187">main_loop</span> = <span style="color:#3d1d81">g_main_loop_new</span> (<span style="color:#bb2ca2">NULL</span>, <span style="color:#bb2ca2">FALSE</span>);</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  </span>g_main_loop_run<span style="color:#000000"> (data.</span><span style="color:#4f8187">main_loop</span><span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(61,29,129)"><span style="color:#000000">  </span>gst_element_set_state<span style="color:#000000"> (data.</span><span style="color:#4f8187">pipeline</span><span style="color:#000000">, </span>GST_STATE_NULL<span style="color:#000000">);</span></div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">  <br></p><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(187,44,162)"><span style="color:#000000">  </span>return<span style="color:#000000"> </span><span style="color:#272ad8">0</span><span style="color:#000000">;</span></div><div style="margin:0px;font-size:11px;font-family:Menlo">}</div></div><div style="margin:0px;font-size:11px;font-family:Menlo"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo"><div style="font-family:Helvetica;font-size:12px;margin:0px"> This pipeline using gst-launch-1.0 works:</div><div style="margin:0px;color:rgb(0,132,0)"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br></span></div><div style="margin:0px;color:rgb(0,132,0)">gst-launch-1.0 rtspsrc location=<a><span style="color:rgb(19,55,255)">rtsp://127.0.0.1:8554/test</span></a> name=src src. ! rtpamrdepay ! amrnbdec ! autoaudiosink src. ! rtpvp8depay ! vp8dec ! videoconvert ! ximagesink</div><div style="margin:0px;color:rgb(0,132,0)"><br></div><div style="margin:0px;color:rgb(0,132,0)"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">This means that my rtsp server is up and running, and producing an appropriate stream for this client.</span></div><div style="margin:0px;color:rgb(0,132,0)"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br></span></div><div style="margin:0px;color:rgb(0,132,0)"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">Log from rtspsrc and attached logs for *:9.</span></div><div style="margin:0px;color:rgb(0,132,0)"><br></div></div><div style="margin:0px;font-size:11px;font-family:Menlo"><div style="font-family:Helvetica;font-size:12px">$ GST_DEBUG=rtspsrc:9 ./rtsp_client</div><div style="font-family:Helvetica;font-size:12px">0:00:00.012373298 21227       0xa2ec00 DEBUG                rtspsrc gstrtspsrc.c:8087:gst_rtspsrc_uri_set_uri:<rtspsrc> parsing URI</div><div style="font-family:Helvetica;font-size:12px">0:00:00.012954043 21227       0xa2ec00 DEBUG                rtspsrc gstrtspsrc.c:8094:gst_rtspsrc_uri_set_uri:<rtspsrc> configuring URI</div><div style="font-family:Helvetica;font-size:12px">0:00:00.013509915 21227       0xa2ec00 DEBUG                rtspsrc gstrtspsrc.c:8110:gst_rtspsrc_uri_set_uri:<rtspsrc> set uri: <a>rtsp://127.0.0.1:8554/test</a></div><div style="font-family:Helvetica;font-size:12px">0:00:00.013924933 21227       0xa2ec00 DEBUG                rtspsrc gstrtspsrc.c:8112:gst_rtspsrc_uri_set_uri:<rtspsrc> request uri is: <a>rtsp://127.0.0.1:8554/test</a></div></div><div><br></div><div></div></div><br><div style="word-wrap:break-word"><div></div><div><br></div><div>Thanks for any hint on what I'm doing wrong.</div><div><br></div><div>Best regards,</div><div><br></div><div>Francisco</div><div><div><br></div></div></div><br>_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
<br></blockquote></div><br></div>