[gst-devel] rtpL16pay with gst-rtsp-0.10.5

Nicolas Bouillot nicolas at cim.mcgill.ca
Tue Jul 27 23:23:55 CEST 2010


Here is the answer, decodebin2 encounters troubles finding the number of
audio channels:
" gstrtpL16depay.c:222:gst_rtp_L16_depay_setcaps:<rtpl16depay0> no
channels specified "

So the working client and server are :
SERVER:
.../gst-rtsp-0.10.5/examples$ ./test-launch "( audiotestsrc \
! audioconvert ! rtpL16pay name=pay0 )"

CLIENT:
$ gst-launch --gst-debug-level=2 rtspsrc \
location=rtsp://localhost:8554/test ! \
capsfilter caps="application/x-rtp, media=(string)audio, \
clock-rate=(int)44100, encoding-name=(string)L16, \
encoding-params=(string)1, channels=(int)1" ! \
rtpL16depay ! audioconvert ! queue ! alsasink



On Wed, 2010-07-21 at 15:00 -0400, Nicolas Bouillot wrote:
> Hi, anyone had the chance to get rtpL16pay and gst-rtsp-0.10.5 working
> together ?
> 
> Here my experience with them together, using the test-launch.c file. The
> server is initialized with this command (details at the end of this
> email):
> .../gst-rtsp-0.10.5/examples$ ./test-launch "( audiotestsrc \
> ! audioconvert ! rtpL16pay name=pay0 )"
> 
> Any of these pipelines can read the stream:
> $ gst-launch rtspsrc location=rtsp://localhost:8554/test rtpL16depay !
> audioconvert ! queue ! alsasink 
> or
> $ gst-launch rtspsrc location=rtsp://localhost:8554/test \
> ! decodebin ! queue ! audioconvert ! alsasink
> 
> 
> But it works with ogg:
> - sender 
> .../gst-rtsp-0.10.5/examples$ ./test-launch "( audiotestsrc \
> ! vorbisenc quality=0.3 ! rtpvorbispay  name=pay0 )"
> 
> - receiver
> gst-launch rtspsrc location=rtsp://localhost:8554/test \
> ! decodebin ! queue ! audioconvert ! alsasink
> 
> 
> Also, I wonder if this is an error in my way of using the rtsp server
> since L16 transmission works using gst-launch and RTP only, as follow:
> - Sender
> gst-launch -v gstrtpbin name=rtpbin audiotestsrc ! audioconvert !
> rtpL16pay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink
> host=127.0.0.1 port=20010   rtpbin.send_rtcp_src_0 ! udpsink
> host=127.0.0.1 port=20011 udpsrc port=20015 ! rtpbin.recv_rtcp_sink_0
> 
> - Receiver
> gst-launch -v gstrtpbin name=rtpbin \
>   udpsrc caps="application/x-rtp, media=(string)audio, \
>     clock-rate=(int)44100,  encoding-name=(string)L16, \
>     encoding-params=(string)1, channels=(int)1" \
>    port=20010 ! rtpbin.recv_rtp_sink_0 rtpbin. ! \ 
>  rtpL16depay ! audioconvert ! queue ! alsasink udpsrc port=20011 !\
>  rtpbin.recv_rtcp_sink_0 \
> rtpbin.send_rtcp_src_0 ! udpsink host=127.0.0.1 port=20015
> 
> 
> Thanks for the help,
> Nicolas
> 
> 
> details using RTSP and decodebin for reading the stream:
> .../gst-rtsp-0.10.5/examples$ ./test-launch "( audiotestsrc \
> ! audioconvert ! rtpL16pay name=pay0 )" | grep Message
> ** Message: listening on port 8554
> ** Message: added new client 0xb1b760 ip 127.0.0.1:28376
> ** Message: attaching to context 0xb15920
> ** Message: client 0xb1b760: received a request
> ** Message: client 0xb1b760: received a request
> ** Message: found media 0xb71e80 for url abspath /test
> ** Message: enter mainloop
> ** Message: found stream 0 with payloader 0xcf0080
> ** Message: constructed media 0xcf7840 for url /test
> ** Message: preparing media 0xcf7840
> ** Message: stream 0x7f6ac8000b00 received caps 0xd3cc80,
> application/x-rtp, media=(string)audio, clock-rate=(int)44100,
> encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1,
> ssrc=(guint)2465050969, payload=(int)96, clock-base=(guint)3592538176,
> seqnum-base=(guint)48267
> ** Message: 0xcf7840: got message type async-done
> ** Message: stats: position 0:00:00.000000000, duration
> 99:99:99.999999999
> ** Message: object 0xcf7840 is prerolled
> ** Message: client 0xb1b760: received a request
> ** Message: reusing cached media 0xcf7840
> ** Message: manage new media 0xcf7840 in session 0xd3a9d0
> ** Message: client 0xb1b760: received a request
> ** Message: 0x7f6ac8000b00: new source 0xd229d0
> ** Message: watching session 0xd30a30
> ** Message: no seek needed
> ** Message: structure: application/x-rtp-source-stats,
> ssrc=(guint)3039725519, internal=(boolean)false,
> validated=(boolean)false, received-bye=(boolean)false,
> is-csrc=(boolean)false, is-sender=(boolean)false,
> rtp-from=(string)127.0.0.1:34320, have-rb=(boolean)false,
> rb-fractionlost=(guint)0, rb-packetslost=(int)0,
> rb-exthighestseq=(guint)0, rb-jitter=(guint)0, rb-lsr=(guint)0,
> rb-dlsr=(guint)0, rb-round-trip=(guint)0;
> ** Message: going to state PLAYING media 0xcf7840
> ** Message: adding 127.0.0.1:34320-34321
> ** Message: active 1 media 0xcf7840
> ** Message: state PLAYING media 0xcf7840
> ** Message: 0xcf7840: got message type new-clock
> ** Message: client 0xb1b760: received a request
> ** Message: going to state PAUSED media 0xcf7840
> ** Message: removing 127.0.0.1:34320-34321
> ** Message: active 0 media 0xcf7840
> ** Message: state PAUSED media 0xcf7840
> ** Message: stats: position 0:00:00.046439909, duration
> 99:99:99.999999999
> ** Message: 0xcf7840: got message type async-done
> ** Message: client 0xb1b760: received a request
> ** Message: going to state NULL media 0xcf7840
> ** Message: active 0 media 0xcf7840
> ** Message: unprepare media 0xcf7840
> ** Message: stream 0x7f6ac8000b00 received caps (nil), NULL
> ** Message: free session media 0xd3a9d0
> ** Message: going to state NULL media 0xcf7840
> ** Message: active 0 media 0xcf7840
> ** Message: free session stream 0xd393c0
> ** Message: finalize session 0xd30a30
> ** Message: client 0xb1b760: connection closed
> ** Message: finalize client 0xb1b760
> ** Message: finalize media 0xcf7840
> 
> 
> 
> .../gst-rtsp-0.10.5/examples$ ./test-launch "( audiotestsrc \
> ! audioconvert ! rtpL16pay name=pay0 )" 2> /dev/null
> RTSP request message 0x10185c8
>  request line:
>    method: 'OPTIONS'
>    uri:    'rtsp://localhost:8554/test'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '1'
>    key: 'User-Agent', value: 'RealMedia Player Version 6.0.9.1235
> (linux-2.0-libc6-i386-gcc2.95)'
>    key: 'ClientChallenge', value: '9e26d33f2984236010ef6253fb1887f7'
>    key: 'CompanyID', value: 'KnKV4M4I/B2FjJ1TToLycw=='
>    key: 'GUID', value: '00000000-0000-0000-0000-000000000000'
>    key: 'RegionData', value: '0'
>    key: 'PlayerStarttime', value: '[28/03/2003:22:50:23 00:00]'
>    key: 'ClientID', value: 'Linux_2.4_6.0.9.1235_play32_RN01_EN_586'
>    key: 'Date', value: 'Wed, 21 Jul 2010 18:49:05 GMT'
>  body:
> RTSP response message 0x7fff08f2d3b0
>  status line:
>    code:   '200'
>    reason: 'OK'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '1'
>    key: 'Public', value: 'OPTIONS, DESCRIBE, GET_PARAMETER, PAUSE, PLAY,
> SETUP, SET_PARAMETER, TEARDOWN'
>    key: 'Server', value: 'GStreamer RTSP server'
>  body: length 0
> RTSP request message 0x10185c8
>  request line:
>    method: 'DESCRIBE'
>    uri:    'rtsp://localhost:8554/test'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '2'
>    key: 'Accept', value: 'application/sdp'
>    key: 'Date', value: 'Wed, 21 Jul 2010 18:49:05 GMT'
>  body:
> RTSP response message 0x7fff08f2d370
>  status line:
>    code:   '200'
>    reason: 'OK'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '2'
>    key: 'Content-Type', value: 'application/sdp'
>    key: 'Content-Base', value: 'rtsp://localhost:8554/test/'
>    key: 'Server', value: 'GStreamer RTSP server'
>  body: length 257
> 00000000 (0x1085e80): 76 3d 30 0d 0a 6f 3d 2d 20 31 31 38 38 33 34 30
> v=0..o=- 1188340
> 00000010 (0x1085e90): 36 35 36 31 38 30 38 38 33 20 31 20 49 4e 20 49
> 656180883 1 IN I
> 00000020 (0x1085ea0): 50 34 20 31 32 37 2e 30 2e 30 2e 31 0d 0a 73 3d
> P4 127.0.0.1..s=
> 00000030 (0x1085eb0): 53 65 73 73 69 6f 6e 20 73 74 72 65 61 6d 65 64
> Session streamed
> 00000040 (0x1085ec0): 20 77 69 74 68 20 47 53 74 72 65 61 6d 65 72 0d
> with GStreamer.
> 00000050 (0x1085ed0): 0a 69 3d 72 74 73 70 2d 73 65 72 76 65 72 0d
> 0a  .i=rtsp-server..
> 00000060 (0x1085ee0): 65 3d 4e 4f 4e 45 0d 0a 74 3d 30 20 30 0d 0a 61
> e=NONE..t=0 0..a
> 00000070 (0x1085ef0): 3d 74 6f 6f 6c 3a 47 53 74 72 65 61 6d 65 72 0d
> =tool:GStreamer.
> 00000080 (0x1085f00): 0a 61 3d 74 79 70 65 3a 62 72 6f 61 64 63 61
> 73  .a=type:broadcas
> 00000090 (0x1085f10): 74 0d 0a 61 3d 72 61 6e 67 65 3a 6e 70 74 3d 30
> t..a=range:npt=0
> 000000a0 (0x1085f20): 2e 30 30 30 30 30 30 2d 0d 0a 6d 3d 61 75 64
> 69  .000000-..m=audi
> 000000b0 (0x1085f30): 6f 20 30 20 52 54 50 2f 41 56 50 20 39 36 0d 0a  o
> 0 RTP/AVP 96..
> 000000c0 (0x1085f40): 63 3d 49 4e 20 49 50 34 20 31 32 37 2e 30 2e 30
> c=IN IP4 127.0.0
> 000000d0 (0x1085f50): 2e 31 0d 0a 61 3d 72 74 70 6d 61 70 3a 39 36
> 20  .1..a=rtpmap:96 
> 000000e0 (0x1085f60): 4c 31 36 2f 34 34 31 30 30 2f 31 0d 0a 61 3d 63
> L16/44100/1..a=c
> 000000f0 (0x1085f70): 6f 6e 74 72 6f 6c 3a 73 74 72 65 61 6d 3d 30 0d
> ontrol:stream=0.
> 00000100 (0x1085f80):
> 0a                                               .               
> RTSP request message 0x10185c8
>  request line:
>    method: 'SETUP'
>    uri:    'rtsp://localhost:8554/test/stream=0'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '3'
>    key: 'Transport', value:
> 'RTP/AVP/UDP;unicast;client_port=41530-41531'
>    key: 'Date', value: 'Wed, 21 Jul 2010 18:49:05 GMT'
>  body:
> RTSP response message 0x7fff08f2d330
>  status line:
>    code:   '200'
>    reason: 'OK'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '3'
>    key: 'Transport', value:
> 'RTP/AVP;unicast;client_port=41530-41531;server_port=36650-36651;mode="PLAY"'
>    key: 'Server', value: 'GStreamer RTSP server'
>    key: 'Session', value: 'iqywjvpgwvlwghwr'
>  body: length 0
> RTSP request message 0x10185c8
>  request line:
>    method: 'PLAY'
>    uri:    'rtsp://localhost:8554/test'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '4'
>    key: 'Range', value: 'npt=0-'
>    key: 'Session', value: 'iqywjvpgwvlwghwr'
>    key: 'Date', value: 'Wed, 21 Jul 2010 18:49:05 GMT'
>  body:
> RTSP response message 0x7fff08f2d2f0
>  status line:
>    code:   '200'
>    reason: 'OK'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '4'
>    key: 'RTP-Info', value:
> 'url=rtsp://localhost:8554/test/stream=0;seq=2318;rtptime=3380877446'
>    key: 'Range', value: 'npt=0.000000-'
>    key: 'Server', value: 'GStreamer RTSP server'
>    key: 'Session', value: 'iqywjvpgwvlwghwr'
>  body: length 0
> RTSP request message 0x10185c8
>  request line:
>    method: 'PAUSE'
>    uri:    'rtsp://localhost:8554/test'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '5'
>    key: 'Session', value: 'iqywjvpgwvlwghwr'
>    key: 'Date', value: 'Wed, 21 Jul 2010 18:49:05 GMT'
>  body:
> RTSP response message 0x7fff08f2d2b0
>  status line:
>    code:   '200'
>    reason: 'OK'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '5'
>    key: 'Server', value: 'GStreamer RTSP server'
>    key: 'Session', value: 'iqywjvpgwvlwghwr'
>  body: length 0
> RTSP request message 0x10185c8
>  request line:
>    method: 'TEARDOWN'
>    uri:    'rtsp://localhost:8554/test'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '6'
>    key: 'Session', value: 'iqywjvpgwvlwghwr'
>    key: 'Date', value: 'Wed, 21 Jul 2010 18:49:05 GMT'
>  body:
> RTSP response message 0x7fff08f2d270
>  status line:
>    code:   '200'
>    reason: 'OK'
>    version: '1.0'
>  headers:
>    key: 'CSeq', value: '6'
>    key: 'Server', value: 'GStreamer RTSP server'
>    key: 'Session', value: 'iqywjvpgwvlwghwr'
>  body: length 0
> 
> 
> 
> 
> $ gst-launch -v rtspsrc location=rtsp://localhost:8554/test !\
>  decodebin ! queue ! audioconvert ! alsasink
> Setting pipeline to PAUSED ...
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:rtpbin0: latency =
> 2000
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: timeout =
> 5000000
> Pipeline is live and does not need PREROLL ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: timeout =
> 0
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)574574419, seqnum-base=(guint)15624, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)574574419, seqnum-base=(guint)15624, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps =
> application/x-rtp, media=(string)audio, payload=(int)96,
> clock-rate=(int)44100, encoding-name=(string)L16,
> encoding-params=(string)1, a-tool=(string)GStreamer,
> a-type=(string)broadcast, clock-base=(guint)574574419,
> seqnum-base=(guint)15624, npt-start=(guint64)0, play-speed=(double)1,
> play-scale=(double)1
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0.GstGhostPad:recv_rtp_src_0_508351388_96: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)574574419, seqnum-base=(guint)15624, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0.GstGhostPad:recv_rtp_src_0_508351388_96.GstProxyPad:proxypad5: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)574574419, seqnum-base=(guint)15624, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_0_508351388_96.GstProxyPad:proxypad4: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)574574419, seqnum-base=(guint)15624, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, a-tool=(string)GStreamer, a-type=(string)broadcast, clock-base=(guint)574574419, seqnum-base=(guint)15624, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
> ERROR: from
> element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0:
> Internal data flow error.
> Additional debug info:
> gstbasesrc.c(2507): gst_base_src_loop
> (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0:
> streaming task paused, reason not-negotiated (-4)
> Execution ended after 39099234 ns.
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = NULL
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps =
> NULL
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0.GstGhostPad:recv_rtp_src_0_508351388_96: caps = NULL
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_0_508351388_96: caps = NULL
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:rtpbin0/GstRtpPtDemux:rtpptdemux0.GstPad:src_96: caps = NULL
> Setting pipeline to NULL ...
> Freeing pipeline ...
> 
> 
> 
> 
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel






More information about the gstreamer-devel mailing list