Connect audio pad created by the rtspsrc plugin to connect it to a splitmuxsink in python

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Connect audio pad created by the rtspsrc plugin to connect it to a splitmuxsink in python

GStreamer-devel mailing list

Hello Gstreamer dev

 

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

 

Here is what I did but only video is working

 

 

#!/usr/bin/env python3

import gi

import signal, os

 

gi.require_version("Gst", "1.0")

gi.require_version("GstAudio", "1.0")

 

from gi.repository import Gst, GObject, GLib, GstAudio

from time import sleep

 

Gst.init(None)

 

 

scn=0

rtpmp4adepay = Gst.ElementFactory.make("rtpmp4adepay", "rtpmp4adepay0")

 

def on_rtspsrc_pad_added(rtspsrc, pad, rtph26xdepay):

    rtspsrc.link(rtph26xdepay)

    rtspsrc.link(rtpmp4adepay)

 

def with_audio(pipeline,splitmuxsink):

    pipeline.add(rtpmp4adepay)

    rtpmp4adepay.link(splitmuxsink)

 

 

def main(uri):

    #pipeline = Gst.Pipeline()

    pipeline = Gst.Pipeline()

    source = Gst.ElementFactory.make("rtspsrc", "video-source")

    source.set_property("location", uri)

    source.set_property("latency", 300)

    pipeline.add(source)

 

 

    # Create the rest of your pipeline here and link it

    depay_plugin_str ="rtp{}depay".format(encoding_method)

    depay = Gst.ElementFactory.make(depay_plugin_str, "depay0")

    pipeline.add(depay)

    #rtspsrc.link(depay)

 

    source.connect("pad-added", on_rtspsrc_pad_added, depay)

    parse_plugin_str = "{}parse".format(encoding_method)

    parse = Gst.ElementFactory.make(parse_plugin_str, "parse")

    pipeline.add(parse)

    depay.link(parse)

 

    queue1 = Gst.ElementFactory.make("queue", "queue1")

    queue1.set_property("max-size-buffers", 0)

    queue1.set_property("max-size-bytes", 0)

    pipeline.add(queue1)

    parse.link(queue1)

 

    mpegtsmux =  Gst.ElementFactory.make("mpegtsmux", "mpegtsmux0")

 

    splitmuxsink =  Gst.ElementFactory.make("splitmuxsink", "splitmuxsink0")

    splitmuxsink.set_property("name","smux")

    splitmuxsink.set_property("async-handling","true")

    splitmuxsink.set_property("muxer",mpegtsmux)

    splitmuxsink.set_property("location",storage_file_name)

    splitmuxsink.set_property("max-size-time",storage_file_time)

    splitmuxsink.set_property("max-size-bytes",storage_file_size)

    splitmuxsink.set_property("max-files",storage_max_file)

    pipeline.add(splitmuxsink)

    queue1.link(splitmuxsink)

 

 

    with_audio(pipeline,splitmuxsink)

 

    # We will add/link the rest of the pipeline later

    loop = GObject.MainLoop()

 

    pipeline.set_state(Gst.State.PLAYING)

 

    try:

        loop.run()

    except:

        pass

 

    pipeline.set_state(Gst.State.NULL)

 

if __name__ == "__main__":

    uri="rtsp://127.0.0.1:{}/stream".format(rtsp_port)

    print(" connect to {}".format(uri))

    main(uri)

 

Thanks in advance

EZ

 



This message has been scanned for malware by Websense. www.websense.com


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel