After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 673949 - Rtspsrc element cannot negiotiate a multicast stream from a teradek cube.
Rtspsrc element cannot negiotiate a multicast stream from a teradek cube.
Status: RESOLVED INCOMPLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.27
Other Linux
: Normal minor
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-04-11 20:04 UTC by Aaron Austin
Modified: 2012-11-24 15:16 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Wireshark capture of VLC connecting to a teradek cube (79.27 KB, application/octet-stream)
2012-04-19 23:54 UTC, Aaron Austin
Details

Description Aaron Austin 2012-04-11 20:04:26 UTC
I was doing some testing with GStreamer and a Teradek Cube.  The Teradek Cube runs an rtsp server, so I was using the rtspsrc element to view streams from the teradek cube.  I was able to view the streams while the teradek cube was putting out unicast streams, but I was not able to view the streams when I configured the teradek cube for multicast.  I discovered that the rtsp server running on the teradek cobe was returning a "Bad Request" when setting up the transport streams. I can view the multicast streams coming from the teradek cube using VLC.

Here is the Teradek website:
http://teradek.com/index2.html

Here is the gst-launch command that I was using to try and connect to the rtsp server running on the teradek cube:

gst-launch-0.10 -v rtspsrc location=rtsp://10.145.128.15/stream1 latency=0 debug=true ! fakesink silent=true

Here is the debug that GStreamer returned:

[root@localhost ~]# gst-launch-0.10 -v rtspsrc location=rtsp://10.145.128.15/stream1 latency=0 debug=true ! fakesink silent=true
Setting pipeline to PAUSED ...
RTSP request message 0xbfb8f220
 request line:
   method: 'OPTIONS'
   uri:    'rtsp://10.145.128.15/stream1'
   version: '1.0'
 headers:
   key: 'User-Agent', value: 'WMPlayer/9.0.0.3250 guid/3300AD50-2C39-46C0-AE0A-9CC9FF7765D1'
 body:
RTSP response message 0xbfb8f204
 status line:
   code:   '200'
   reason: 'OK'
   version: '1.0'
 headers:
   key: 'CSeq', value: '1'
   key: 'Server', value: 'RtpRtspFlyer'
   key: 'Public', value: 'DESCRIBE'
   key: 'Public', value: 'SETUP'
   key: 'Public', value: 'PLAY'
   key: 'Public', value: 'PAUSE'
   key: 'Public', value: 'TEARDOWN'
   key: 'Content-Length', value: '0'
   key: 'Cache-Control', value: 'no-cache'
 body: length 1
00000000 (0x8a75988): 00                                               .        
RTSP request message 0xbfb8f220
 request line:
   method: 'DESCRIBE'
   uri:    'rtsp://10.145.128.15/stream1'
   version: '1.0'
 headers:
   key: 'Accept', value: 'application/sdp'
 body:
RTSP response message 0xbfb8f204
 status line:
   code:   '200'
   reason: 'OK'
   version: '1.0'
 headers:
   key: 'CSeq', value: '2'
   key: 'Server', value: 'RtpRtspFlyer'
   key: 'Content-Type', value: 'application/sdp'
   key: 'Content-Length', value: '823'
   key: 'Cache-Control', value: 'no-cache'
 body: length 824
00000000 (0x8a83000): 76 3d 30 0d 0a 6f 3d 2d 20 2d 34 38 39 31 30 31  v=0..o=- -489101
00000010 (0x8a83010): 37 39 33 36 34 32 32 32 36 38 35 39 37 20 2d 34  7936422268597 -4
00000020 (0x8a83020): 38 39 31 30 31 37 39 33 36 34 32 31 31 37 33 33  8910179364211733
00000030 (0x8a83030): 38 31 20 49 4e 20 49 50 34 20 32 33 39 2e 31 39  81 IN IP4 239.19
00000040 (0x8a83040): 32 2e 32 30 2e 31 0d 0a 63 3d 49 4e 20 49 50 34  2.20.1..c=IN IP4
00000050 (0x8a83050): 20 30 2e 30 2e 30 2e 30 0d 0a 61 3d 74 6f 6f 6c   0.0.0.0..a=tool
00000060 (0x8a83060): 3a 20 52 74 70 52 74 73 70 46 6c 79 65 72 0d 0a  : RtpRtspFlyer..
00000070 (0x8a83070): 61 3d 72 61 6e 67 65 3a 6e 70 74 3d 30 2d 20 0d  a=range:npt=0- .
00000080 (0x8a83080): 0a 6d 3d 76 69 64 65 6f 20 30 20 52 54 50 2f 41  .m=video 0 RTP/A
00000090 (0x8a83090): 56 50 20 39 36 0d 0a 61 3d 72 74 70 6d 61 70 3a  VP 96..a=rtpmap:
000000a0 (0x8a830a0): 39 36 20 48 32 36 34 2f 39 30 30 30 30 0d 0a 61  96 H264/90000..a
000000b0 (0x8a830b0): 3d 66 6d 74 70 3a 39 36 20 70 61 63 6b 65 74 69  =fmtp:96 packeti
000000c0 (0x8a830c0): 7a 61 74 69 6f 6e 2d 6d 6f 64 65 3d 31 3b 70 72  zation-mode=1;pr
000000d0 (0x8a830d0): 6f 66 69 6c 65 2d 6c 65 76 65 6c 2d 69 64 3d 34  ofile-level-id=4
000000e0 (0x8a830e0): 32 30 30 31 65 3b 73 70 72 6f 70 2d 70 61 72 61  2001e;sprop-para
000000f0 (0x8a830f0): 6d 65 74 65 72 2d 73 65 74 73 3d 5a 32 51 41 4b  meter-sets=Z2QAK
00000100 (0x8a83100): 4b 32 77 70 44 42 53 41 67 46 78 51 57 4b 51 50  K2wpDBSAgFxQWKQP
00000110 (0x8a83110): 51 52 57 46 49 59 4b 51 45 41 75 4b 43 78 53 42  QRWFIYKQEAuKCxSB
00000120 (0x8a83120): 36 43 4b 77 70 44 42 53 41 67 46 78 51 57 4b 51  6CKwpDBSAgFxQWKQ
00000130 (0x8a83130): 50 51 52 54 44 6f 55 4b 51 4e 43 34 6f 4a 48 4d  PQRTDoUKQNC4oJHM
00000140 (0x8a83140): 47 49 65 6d 48 51 6f 55 67 61 46 78 51 53 4f 59  GIemHQoUgaFxQSOY
00000150 (0x8a83150): 4d 51 39 4d 4f 68 51 70 41 30 4c 69 67 6b 63 77  MQ9MOhQpA0Ligkcw
00000160 (0x8a83160): 59 68 36 78 45 51 6d 49 56 69 6c 73 51 52 57 55  Yh6xEQmIVilsQRWU
00000170 (0x8a83170): 55 52 4a 73 6f 67 78 4f 55 34 51 49 54 4b 55 49  URJsogxOU4QITKUI
00000180 (0x8a83180): 45 56 6c 43 43 54 59 51 56 68 42 4d 4a 51 68 4d  EVlCCTYQVhBMJQhM
00000190 (0x8a83190): 49 6a 47 67 67 57 51 4a 46 61 49 47 42 4a 5a 42  IjGggWQJFaIGBJZB
000001a0 (0x8a831a0): 41 61 45 6e 61 4d 49 44 77 73 53 57 51 51 4b 43  AaEnaMIDwsSWQQKC
000001b0 (0x8a831b0): 77 73 72 52 42 51 59 4f 57 51 77 65 4f 30 59 45  wsrRBQYOWQweO0YE
000001c0 (0x8a831c0): 42 5a 41 53 4e 41 6f 67 73 7a 6c 41 55 41 57 37  BZASNAogszlAUAW7
000001d0 (0x8a831d0): 41 52 41 41 41 4c 75 41 41 43 76 79 44 67 41 41  ARAAALuAACvyDgAA
000001e0 (0x8a831e0): 41 4d 42 66 58 68 41 41 41 4f 35 72 4b 2f 2f 2b  AMBfXhAAAO5rK//+
000001f0 (0x8a831f0): 4d 41 41 41 41 76 72 77 67 41 41 48 63 31 6c 66  MAAAAvrwgAAHc1lf
00000200 (0x8a83200): 2f 2f 43 67 41 3d 3d 2c 61 50 34 38 73 41 3d 3d  //CgA==,aP48sA==
00000210 (0x8a83210): 3b 0d 0a 61 3d 63 6f 6e 74 72 6f 6c 3a 72 74 73  ;..a=control:rts
00000220 (0x8a83220): 70 3a 2f 2f 31 30 2e 31 34 35 2e 31 32 38 2e 31  p://10.145.128.1
00000230 (0x8a83230): 35 2f 73 74 72 65 61 6d 31 2f 74 72 61 63 6b 49  5/stream1/trackI
00000240 (0x8a83240): 44 3d 30 0d 0a 6d 3d 61 75 64 69 6f 20 30 20 52  D=0..m=audio 0 R
00000250 (0x8a83250): 54 50 2f 41 56 50 20 39 38 0d 0a 61 3d 72 74 70  TP/AVP 98..a=rtp
00000260 (0x8a83260): 6d 61 70 3a 39 38 20 6d 70 65 67 34 2d 67 65 6e  map:98 mpeg4-gen
00000270 (0x8a83270): 65 72 69 63 2f 34 38 30 30 30 2f 32 0d 0a 61 3d  eric/48000/2..a=
00000280 (0x8a83280): 66 6d 74 70 3a 39 38 20 73 74 72 65 61 6d 74 79  fmtp:98 streamty
00000290 (0x8a83290): 70 65 3d 35 3b 20 70 72 6f 66 69 6c 65 2d 6c 65  pe=5; profile-le
000002a0 (0x8a832a0): 76 65 6c 2d 69 64 3d 31 35 3b 20 6d 6f 64 65 3d  vel-id=15; mode=
000002b0 (0x8a832b0): 41 41 43 2d 68 62 72 3b 20 63 6f 6e 66 69 67 3d  AAC-hbr; config=
000002c0 (0x8a832c0): 31 31 39 30 3b 20 53 69 7a 65 4c 65 6e 67 74 68  1190; SizeLength
000002d0 (0x8a832d0): 3d 31 33 3b 49 6e 64 65 78 4c 65 6e 67 74 68 3d  =13;IndexLength=
000002e0 (0x8a832e0): 33 3b 20 49 6e 64 65 78 44 65 6c 74 61 4c 65 6e  3; IndexDeltaLen
000002f0 (0x8a832f0): 67 74 68 3d 33 3b 20 50 72 6f 66 69 6c 65 3d 31  gth=3; Profile=1
00000300 (0x8a83300): 3b 0d 0a 61 3d 63 6f 6e 74 72 6f 6c 3a 72 74 73  ;..a=control:rts
00000310 (0x8a83310): 70 3a 2f 2f 31 30 2e 31 34 35 2e 31 32 38 2e 31  p://10.145.128.1
00000320 (0x8a83320): 35 2f 73 74 72 65 61 6d 31 2f 74 72 61 63 6b 49  5/stream1/trackI
00000330 (0x8a83330): 44 3d 31 0d 0a 0d 0a 00                          D=1..... 
sdp packet 0xbfb8f1a4:
 version:       '0'
 origin:
  username:     '-'
  sess_id:      '-4891017936422268597'
  sess_version: '-4891017936421173381'
  nettype:      'IN'
  addrtype:     'IP4'
  addr:         '239.192.20.1'
 session_name:  '(NULL)'
 information:   '(NULL)'
 uri:           '(NULL)'
 connection:
  nettype:      'IN'
  addrtype:     'IP4'
  address:      '0.0.0.0'
  ttl:          '0'
  addr_number:  '0'
 key:
  type:         '(NULL)'
  data:         '(NULL)'
 attributes:
  attribute 'tool' : ' RtpRtspFlyer'
  attribute 'range' : 'npt=0- '
 medias:
  media 0:
   media:       'video'
   port:        '0'
   num_ports:   '4294967295'
   proto:       'RTP/AVP'
   formats:
    format  '96'
   information: '(NULL)'
   key:
    type:       '(NULL)'
    data:       '(NULL)'
   attributes:
    attribute 'rtpmap' : '96 H264/90000'
    attribute 'fmtp' : '96 packetization-mode=1;profile-level-id=42001e;sprop-parameter-sets=Z2QAKK2wpDBSAgFxQWKQPQRWFIYKQEAuKCxSB6CKwpDBSAgFxQWKQPQRTDoUKQNC4oJHMGIemHQoUgaFxQSOYMQ9MOhQpA0LigkcwYh6xEQmIVilsQRWUURJsogxOU4QITKUIEVlCCTYQVhBMJQhMIjGggWQJFaIGBJZBAaEnaMIDwsSWQQKCwsrRBQYOWQweO0YEBZASNAogszlAUAW7ARAAALuAACvyDgAAAMBfXhAAAO5rK//+MAAAAvrwgAAHc1lf//CgA==,aP48sA==;'
    attribute 'control' : 'rtsp://10.145.128.15/stream1/trackID=0'
  media 1:
   media:       'audio'
   port:        '0'
   num_ports:   '4294967295'
   proto:       'RTP/AVP'
   formats:
    format  '98'
   information: '(NULL)'
   key:
    type:       '(NULL)'
    data:       '(NULL)'
   attributes:
    attribute 'rtpmap' : '98 mpeg4-generic/48000/2'
    attribute 'fmtp' : '98 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1190; SizeLength=13;IndexLength=3; IndexDeltaLength=3; Profile=1;'
    attribute 'control' : 'rtsp://10.145.128.15/stream1/trackID=1'
RTSP request message 0xbfb8f080
 request line:
   method: 'SETUP'
   uri:    'rtsp://10.145.128.15/stream1/trackID=0'
   version: '1.0'
 headers:
   key: 'Transport', value: 'RTP/AVP/UDP;unicast;client_port=40620-40621'
 body:
RTSP response message 0xbfb8f064
 status line:
   code:   '200'
   reason: 'OK'
   version: '1.0'
 headers:
   key: 'CSeq', value: '3'
   key: 'Server', value: 'RtpRtspFlyer'
   key: 'Transport', value: 'RTP/AVP/UDP;multicast;destination=239.192.20.1;port=50023-50024;client_port=40620-40621'
   key: 'Cache-Control', value: 'no-cache'
   key: 'Session', value: '1745696487'
 body: length 0
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:rtpbin0: latency = 0
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc3: timeout = 5000000
RTSP request message 0xbfb8f080
 request line:
   method: 'SETUP'
   uri:    'rtsp://10.145.128.15/stream1/trackID=1'
   version: '1.0'
 headers:
   key: 'Transport', value: 'RTP/AVP/UDP;multicast'
 body:
RTSP response message 0xbfb8f064
 status line:
   code:   '400'
   reason: 'Bad Request'
   version: '1.0'
 headers:
   key: 'CSeq', value: '4'
   key: 'Server', value: 'RtpRtspFlyer'
 body: length 0
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Could not write to resource.
Additional debug info:
gstrtspsrc.c(4528): gst_rtspsrc_setup_streams (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0:
Error (400): Bad Request
Setting pipeline to NULL ...
Freeing pipeline ...
[root@localhost ~]#
Comment 1 Wim Taymans 2012-04-16 14:32:13 UTC
Can you make a dump of the vlc traffic? With wireshark or so would be fine. It seems GStreamer is asking for unicast first but the server then replies with a multicast reply.
Comment 2 Aaron Austin 2012-04-19 23:54:29 UTC
Created attachment 212398 [details]
Wireshark capture of VLC connecting to a teradek cube

Here is a wireshark capture of VLC onnecting to a teradek cube that has been configured for multicast.  It appears that VLC always requests a unicast stream, even when the teradek cube responds with a multicast stream, and VLC  provides the teradek cube with some client ports to use whenever it requests a unicast stream.  

Looking at the original debug information I got from GStreamer, I see that GStreamer provided client ports when it made the initial unicast request for TrackID 0.  When the teradek cube responded back with a multicast stream, I see that GStreamer switched over and started to make multicast requests.  I noticed that GStreamer did not provide the teradek with any client ports when it made the multicast setup request for trackID 1.  I suspect that the teradek cube is not happy because it is not getting supplied with any client ports when it is recieving the setup request for the multicast stream.

I think there are two ways to solve this issue:
1.  Always request a unicast stream regardless of what the rtspserver responds with, which is what VLC does.
2.  Supply the rtspserver with client ports when making a setup request for multicast streams.
Comment 3 Tim-Philipp Müller 2012-10-01 18:10:45 UTC
Could you please also re-test with the latest 0.10.x release (that is core/base 0.10.36 and -good 0.10.31 from Feb 2012), or 0.10 git branch, or - even better - GStreamer 1.0 ?  0.10.27 is a tad old.
Comment 4 Tim-Philipp Müller 2012-11-24 15:16:48 UTC
I know it's been a while, but would still be great if you could re-test with GStreamer 1.x at some point, thanks!

In the mean time, I hope you don't mind if I close this. If it's still an issue with current releases, someone will file a new bug sooner or later.