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

Nicolas Bouillot nicolas at cim.mcgill.ca
Wed Jul 21 21:00:24 CEST 2010


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 ...







More information about the gstreamer-devel mailing list