<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello Gstreamer dev<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I wanted to know if someone has an idea how to connect the audio pad created by the rtspsrc plugin to connect it to a splitmuxsink in a python program<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is what I did but only video is working<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#!/usr/bin/env python3<o:p></o:p></p>
<p class="MsoNormal">import gi<o:p></o:p></p>
<p class="MsoNormal">import signal, os<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">gi.require_version("Gst", "1.0")<o:p></o:p></p>
<p class="MsoNormal">gi.require_version("GstAudio", "1.0")<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">from gi.repository import Gst, GObject, GLib, GstAudio<o:p></o:p></p>
<p class="MsoNormal">from time import sleep<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Gst.init(None)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">scn=0<o:p></o:p></p>
<p class="MsoNormal">rtpmp4adepay = Gst.ElementFactory.make("rtpmp4adepay", "rtpmp4adepay0")<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">def on_rtspsrc_pad_added(rtspsrc, pad, rtph26xdepay):<o:p></o:p></p>
<p class="MsoNormal">    rtspsrc.link(rtph26xdepay)<o:p></o:p></p>
<p class="MsoNormal">    rtspsrc.link(rtpmp4adepay)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">def with_audio(pipeline,splitmuxsink):<o:p></o:p></p>
<p class="MsoNormal">    pipeline.add(rtpmp4adepay)<o:p></o:p></p>
<p class="MsoNormal">    rtpmp4adepay.link(splitmuxsink)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">def main(uri):<o:p></o:p></p>
<p class="MsoNormal">    #pipeline = Gst.Pipeline()<o:p></o:p></p>
<p class="MsoNormal">    pipeline = Gst.Pipeline()<o:p></o:p></p>
<p class="MsoNormal">    source = Gst.ElementFactory.make("rtspsrc", "video-source")<o:p></o:p></p>
<p class="MsoNormal">    source.set_property("location", uri)<o:p></o:p></p>
<p class="MsoNormal">    source.set_property("latency", 300)<o:p></o:p></p>
<p class="MsoNormal">    pipeline.add(source)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    # Create the rest of your pipeline here and link it<o:p></o:p></p>
<p class="MsoNormal">    depay_plugin_str ="rtp{}depay".format(encoding_method)<o:p></o:p></p>
<p class="MsoNormal">    depay = Gst.ElementFactory.make(depay_plugin_str, "depay0")<o:p></o:p></p>
<p class="MsoNormal">    pipeline.add(depay)<o:p></o:p></p>
<p class="MsoNormal">    #rtspsrc.link(depay)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    source.connect("pad-added", on_rtspsrc_pad_added, depay)<o:p></o:p></p>
<p class="MsoNormal">    parse_plugin_str = "{}parse".format(encoding_method)<o:p></o:p></p>
<p class="MsoNormal">    parse = Gst.ElementFactory.make(parse_plugin_str, "parse")<o:p></o:p></p>
<p class="MsoNormal">    pipeline.add(parse)<o:p></o:p></p>
<p class="MsoNormal">    depay.link(parse)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    queue1 = Gst.ElementFactory.make("queue", "queue1")<o:p></o:p></p>
<p class="MsoNormal">    queue1.set_property("max-size-buffers", 0)<o:p></o:p></p>
<p class="MsoNormal">    queue1.set_property("max-size-bytes", 0)<o:p></o:p></p>
<p class="MsoNormal">    pipeline.add(queue1)<o:p></o:p></p>
<p class="MsoNormal">    parse.link(queue1)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    mpegtsmux =  Gst.ElementFactory.make("mpegtsmux", "mpegtsmux0")<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    splitmuxsink =  Gst.ElementFactory.make("splitmuxsink", "splitmuxsink0")<o:p></o:p></p>
<p class="MsoNormal">    splitmuxsink.set_property("name","smux")<o:p></o:p></p>
<p class="MsoNormal">    splitmuxsink.set_property("async-handling","true")<o:p></o:p></p>
<p class="MsoNormal">    splitmuxsink.set_property("muxer",mpegtsmux)<o:p></o:p></p>
<p class="MsoNormal">    splitmuxsink.set_property("location",storage_file_name)<o:p></o:p></p>
<p class="MsoNormal">    splitmuxsink.set_property("max-size-time",storage_file_time)<o:p></o:p></p>
<p class="MsoNormal">    splitmuxsink.set_property("max-size-bytes",storage_file_size)<o:p></o:p></p>
<p class="MsoNormal">    splitmuxsink.set_property("max-files",storage_max_file)<o:p></o:p></p>
<p class="MsoNormal">    pipeline.add(splitmuxsink)<o:p></o:p></p>
<p class="MsoNormal">    queue1.link(splitmuxsink)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    with_audio(pipeline,splitmuxsink)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    # We will add/link the rest of the pipeline later<o:p></o:p></p>
<p class="MsoNormal">    loop = GObject.MainLoop()<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    pipeline.set_state(Gst.State.PLAYING)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    try:<o:p></o:p></p>
<p class="MsoNormal">        loop.run()<o:p></o:p></p>
<p class="MsoNormal">    except:<o:p></o:p></p>
<p class="MsoNormal">        pass<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    pipeline.set_state(Gst.State.NULL)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">if __name__ == "__main__":<o:p></o:p></p>
<p class="MsoNormal">    uri="rtsp://127.0.0.1:{}/stream".format(rtsp_port)<o:p></o:p></p>
<p class="MsoNormal">    print(" connect to {}".format(uri))<o:p></o:p></p>
<p class="MsoNormal">    main(uri)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks in advance<o:p></o:p></p>
<p class="MsoNormal">EZ<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br><br>
<P align=center><FONT style="BACKGROUND-COLOR: #ffffff">This message has been scanned for malware by Websense.  </FONT><A href="http://www.websense.com/"><FONT style="BACKGROUND-COLOR: #ffffff" color=#000000>www.websense.com</FONT></A></P>
</body>
</html>