AW: receiving pipeline with changing sources

Johannes Bauer hannes_bauer at aon.at
Tue Jun 7 15:34:53 UTC 2016


Hello again!

I just want to clarify my goal!

I want to have the multicast receiver pipelines running on my raspberrys and be able to stream audio whenever I want.
So the receiving pipeline should always be ready for an incoming stream (of course only 1 at a time).

Unfortunatly the client on the raspberries never gets a EoS Message from the first stream, although I can see the rtcp goodbye message when I peek the traffic with wireshark.
So I cannot reset the pipeline.

Is it possible to do it with gstreamer only?


Here is my test-scenario:

I try streaming a test mp3 file 2 times in succession

sending pipeline (2 times in succession):

gst-launch-1.0.exe -e rtpbin name=rtpbin filesrc location=C:\\test.mp3 ! mpegaudioparse ! rtpmpapay ! application/x-rtp,clock-rate=(int)90000,payload=(int)14 \
 ! rtpbin.send_rtp_sink_1 rtpbin.send_rtp_src_1 ! udpsink host=239.192.55.1 port=4000 rtpbin.send_rtcp_src_1 ! udpsink host=239.192.55.1 port=4001 sync=false async=false


multicast receiver python script:

#!/usr/bin/python

import gi
gi.require_version("Gst","1.0")
from gi.repository import Gst as gst
from gi.repository import Gtk as gtk
from gi.repository import GObject


class Main:

    def bus_cb(self,bus, message, user_data):
        mstruct = message.get_structure()
        print " message: " + mstruct.to_string()
        return True

    def pad_added_cb(self,rtpbin, new_pad, depay):
        print "pad added!"
        sinkpad= gst.Element.get_static_pad(depay,'sink')
        lres = gst.Pad.link(new_pad,sinkpad)

    def __init__(self):

        gst.debug_set_active(True)
        gst.debug_set_default_threshold(3)

        GObject.threads_init()
        gst.init(None)
        
        self.pipeline = gst.Pipeline()
        
        self.udpsrc = gst.ElementFactory.make("udpsrc", "rtpsrc")
        self.udpsrc.set_property("address","239.192.55.1")
        self.udpsrc.set_property("auto-multicast", True)
        self.udpsrc.set_property("port", 4000)
        audioCaps = gst.Caps.from_string("application/x-rtp,clock-rate=90000,encoding-name=MPA,media=audio,channels=1,payload=14")
        self.udpsrc.set_property("caps",audioCaps)
        
        
        self.rtcpsrc = gst.ElementFactory.make("udpsrc", "rtcpsrc")
        self.rtcpsrc.set_property("address","239.192.55.1")
        self.rtcpsrc.set_property("auto-multicast", True)
        self.rtcpsrc.set_property("port", 4001)
        rtcpCaps = gst.Caps.from_string("application/x-rtcp")
        self.rtcpsrc.set_property("caps",rtcpCaps)


        self.rtpbin = gst.ElementFactory.make("rtpbin","rtpbin")
       
        self.rtpmpadepay = gst.ElementFactory.make("rtpmpadepay","rtpmpadepay")

        self.mpegaudioparse = gst.ElementFactory.make("mpegaudioparse","mpegaudioparse")
        
        self.mad = gst.ElementFactory.make("mad","mad")

        self.audioconvert = gst.ElementFactory.make("audioconvert","audioconvert")

        self.autoaudiosink = gst.ElementFactory.make("alsasink","alsasink")
        
        self.autoaudiosink.set_property("sync",False)
        
        self.autoaudiosink.set_property("async",False)

        self.bus = self.pipeline.get_bus()
        self.bus.add_watch(1,self.bus_cb,None)

        self.pipeline.add(self.udpsrc)
        self.pipeline.add(self.rtcpsrc)
        self.pipeline.add(self.rtpbin)
        self.pipeline.add(self.rtpmpadepay)
        self.pipeline.add(self.mpegaudioparse)
        self.pipeline.add(self.mad)
        self.pipeline.add(self.audioconvert)
        self.pipeline.add(self.autoaudiosink)
        
        srcpad = gst.Element.get_static_pad(self.udpsrc,'src')
        sinkpad = gst.Element.get_request_pad(self.rtpbin,'recv_rtp_sink_0')
        lres=gst.Pad.link(srcpad,sinkpad)
        
        
        srcpad = gst.Element.get_static_pad(self.rtcpsrc,'src')
        sinkpad = gst.Element.get_request_pad(self.rtpbin,'recv_rtcp_sink_0')
        lres=gst.Pad.link(srcpad,sinkpad)
        
        self.rtpbin.connect('pad_added', self.pad_added_cb, self.rtpmpadepay)
        
        self.rtpmpadepay.link(self.mpegaudioparse)
        self.mpegaudioparse.link(self.mad)
        self.mad.link(self.audioconvert)
        self.audioconvert.link(self.autoaudiosink)
        
        self.pipeline.set_state(gst.State.PLAYING)


start=Main()
gtk.main()
print "End"


python script output:

 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PLAYING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstUDPSrc\)\ rtpsrc", object=(GstTask)"\(GstTask\)\ rtpsrc:src";
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstUDPSrc\)\ rtpsrc", object=(GstTask)"\(GstTask\)\ rtpsrc:src";
 message: GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstUDPSrc\)\ rtcpsrc", object=(GstTask)"\(GstTask\)\ rtcpsrc:src";
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstUDPSrc\)\ rtcpsrc", object=(GstTask)"\(GstTask\)\ rtcpsrc:src";
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PLAYING;
 message: GstMessageNewClock, clock=(GstClock)"\(GstSystemClock\)\ GstSystemClock";
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PLAYING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PLAYING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PLAYING;
 message: GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstRtpJitterBuffer\)\ rtpjitterbuffer0", object=(GstTask)"\(GstTask\)\ task2";
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PLAYING;
 message: GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
 message: GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstRtpJitterBuffer\)\ rtpjitterbuffer0", object=(GstTask)"\(GstTask\)\ rtpjitterbuffer0:src";
pad added!
 message: GstMessageStreamStart, group-id=(uint)0;
 message: GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstAlsaSink\)\ alsasink", object=(GThread)NULL;
 message: GstMessageTag, taglist=(taglist)"taglist\,\ audio-codec\=\(string\)\"MPEG\\\ 1\\\ Audio\\\,\\\ Layer\\\ 3\\\ \\\(MP3\\\)\"\,\ nominal-bitrate\=\(uint\)128000\,\ has-crc\=\(boolean\)false\,\ channel-mode\=\(string\)joint-stereo\;";
 message: GstMessageTag, taglist=(taglist)"taglist\,\ audio-codec\=\(string\)\"MPEG\\\ 1\\\ Audio\\\,\\\ Layer\\\ 3\\\ \\\(MP3\\\)\"\,\ nominal-bitrate\=\(uint\)128000\,\ has-crc\=\(boolean\)false\,\ channel-mode\=\(string\)joint-stereo\,\ minimum-bitrate\=\(uint\)128012\,\ bitrate\=\(uint\)127981\,\ maximum-bitrate\=\(uint\)128012\;";




---- hannes_bauer at aon.at schrieb ----
>
> Hello dear devs!
>
> First of all I want to thank you for your work. Gstreamer is awesome and
> very handy streaming tool.
>
> I am trying to build a pipeline for a mpa encoded rtp multicast stream.
> The goal is to stream from a server to many raspberrys. On the server i
> run gst 1.8.1, on the pi 1.2.0.
>
> I would like to change the sending sources while the receiving stream is
> running.
> First I stream the mic input, which works fine.
> But then i want to stream an mp3 file ant then i get no output. I need
> to restart the receiving pipeline in order to get a sound output for the
> second stream.
>
> It does not matter if I stream mic or mp3 first.
>
> streaming mic pipe:
>
> gst-launch-1.0.exe rtpbin name=rtpbin autoaudiosrc
> ! audioconvert ! lamemp3enc ! rtpmpapay ! application/x-rtp,
> clock-rate=(int)9000
> 0,payload=(int)14 ! rtpbin.send_rtp_sink_1 rtpbin.send_rtp_src_1 !
> udpsink host=
> 239.192.55.1 port=4000
>
> streaming file pipe:
>
> gst-launch-1.0.exe rtpbin name=rtpbin filesrc locat
> ion=C:\\test.mp3 ! mpegaudioparse ! rtpmpapay ! application/x-rtp,
> clock-rate=(in
> t)90000,payload=(int)14 ! rtpbin.send_rtp_sink_1 rtpbin.send_rtp_src_1 !
> udpsink
>  host=239.192.55.1 port=4000
>
> receiving pipe:
>
> gst-launch-1.0.exe rtpbin name=rtpbin udpsrc multic
> ast-group=239.192.55.1 auto-multicast=true port=4000
> caps=application/x-rtp,cloc
> k-rate=(int)90000,encoding-name=(string)MPA,media=(string)audio,
> payload=14 ! rtp
> bin.recv_rtp_sink_0 rtpbin. ! rtpmpadepay ! mpegaudioparse ! mad !
> audioconvert
> ! autoaudiosink
>
> here is the output of the receiving pipeline:
>
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.
> GstProxyPad:proxypad1: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_src: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0:
> caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.
> GstProxyPad:proxypad1: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_src: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:src_4066390227: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0:
> caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_4066390227_14: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14
> /GstPipeline:pipeline0/GstRtpMPADepay:rtpmpadepay0.GstPad:src: caps =
> audio/mpeg, mpegversion=(int)1
> /GstPipeline:pipeline0/GstMpegAudioParse:mpegaudioparse0.GstPad:sink:
> caps = audio/mpeg, mpegversion=(int)1
> /GstPipeline:pipeline0/GstRtpMPADepay:rtpmpadepay0.GstPad:sink: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_4066390227_14.GstProxyPad:proxypad2: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstMpegAudioParse:mpegaudioparse0.GstPad:src:
> caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1,
> layer=(int)3, rate=(int)44100, channels=(int)2, parsed=(boolean)true
> /GstPipeline:pipeline0/GstMad:mad0.GstPad:sink: caps = audio/mpeg,
> mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3,
> rate=(int)44100, channels=(int)2, parsed=(boolean)true
> /GstPipeline:pipeline0/GstMad:mad0.GstPad:src: caps = audio/x-raw,
> format=(string)S32LE, layout=(string)interleaved, rate=(int)44100,
> channels=(int)2, channel-mask=(bitmask)0x0000000000000003
> /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps =
> audio/x-raw, layout=(string)interleaved, rate=(int)44100,
> format=(string)S16LE, channels=(int)2,
> channel-mask=(bitmask)0x0000000000000003
> /GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.
> GstProxyPad:proxypad0: caps = audio/x-raw, layout=(string)interleaved,
> rate=(int)44100, format=(string)S16LE, channels=(int)2,
> channel-mask=(bitmask)0x0000000000000003
> /GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstAlsaSink:
> autoaudiosink0-actual-sink-alsa.GstPad:sink: caps = audio/x-raw,
> layout=(string)interleaved, rate=(int)44100, format=(string)S16LE,
> channels=(int)2, channel-mask=(bitmask)0x0000000000000003
> /GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink:
> caps = audio/x-raw, layout=(string)interleaved, rate=(int)44100,
> format=(string)S16LE, channels=(int)2,
> channel-mask=(bitmask)0x0000000000000003
> /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps =
> audio/x-raw, format=(string)S32LE, layout=(string)interleaved,
> rate=(int)44100, channels=(int)2,
> channel-mask=(bitmask)0x0000000000000003
> /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.
> GstProxyPad:proxypad1: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_src: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:src_4066390227: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0:
> caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> src_14: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_4066390227_14: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14
> /GstPipeline:pipeline0/GstRtpMPADepay:rtpmpadepay0.GstPad:sink: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_4066390227_14.GstProxyPad:proxypad2: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer1.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)3533670621
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux1.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)3533670621
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer1.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)3533670621
> /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.
> GstProxyPad:proxypad1: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_src: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:src_4066390227: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0:
> caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_3533670621_14: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_3533670621_14.GstProxyPad:proxypad3: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.
> GstProxyPad:proxypad1: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_src: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:src_4066390227: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0:
> caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer2.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4246170506
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux2.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4246170506
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer2.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4246170506
> /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.
> GstProxyPad:proxypad1: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_src: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:src_4066390227: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0:
> caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_4246170506_14: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:
> recv_rtp_src_0_4246170506_14.GstProxyPad:proxypad4: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
> application/x-rtp, clock-rate=(int)90000, encoding-name=(string)MPA,
> media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0.
> GstProxyPad:proxypad1: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_src: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:src_4066390227: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:src: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpPtDemux:rtpptdemux0.GstPad:
> sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14,
> ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpJitterBuffer:
> rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp,
> clock-rate=(int)90000, encoding-name=(string)MPA, media=(string)audio,
> payload=(int)14, ssrc=(uint)4066390227
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSsrcDemux:rtpssrcdemux0.
> GstPad:sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:
> recv_rtp_sink: caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> /GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_sink_0:
> caps = application/x-rtp, clock-rate=(int)90000,
> encoding-name=(string)MPA, media=(string)audio, payload=(int)14
> handling interrupt.
> Interrupt: Stopping pipeline ...
> Execution ended after 0:01:19.274019564
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> Setting pipeline to NULL ...
> Freeing pipeline ...
>
>
> I also tried making the receiving side with py-gst. First stream plays
> fine. And the second stream plays very distorted and following message
> is displayed:
>
> GStreamer-CRITICAL **: gst_util_uint64_scale_int: assertion `denom > 0'
> failed
>
> If i stream the first stream again it plays fine as well. I think there
> may be a problem with the clock jumping.
>
> Do you know a way to make this work?
>
> Kind regards


More information about the gstreamer-devel mailing list