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 583188 - Problem with sdp: bind failed or video disappear after few seconds
Problem with sdp: bind failed or video disappear after few seconds
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
0.10.x
Other Linux
: Normal major
: 0.10.13
Assigned To: Wim Taymans
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-05-19 10:19 UTC by Nicola
Modified: 2009-05-21 20:22 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
possible patch (4.55 KB, patch)
2009-05-19 15:38 UTC, Wim Taymans
committed Details | Review

Description Nicola 2009-05-19 10:19:44 UTC
I'm having several issue with sdp file, here is my scenario:

- the sender is an encoder with ip 192.168.2.18
 - the receiver is my laptop with ip 192.168.2.101

 The sdp generated from the encoder is the following:

 

v=0
 o=- 3451450218317 3451450218318 IN IP4 192.168.2.18
 s=encoder_18.sdp
 e=NONE
 c=IN IP4 192.168.2.18
 b=RR:0
 t=0
 m=video 5324 RTP/AVP 96
 b=AS:5120
 a=rtpmap:96 MP4V-ES/90000
 a=fmtp:96 profile-level-id=3;config=000001B003000001B509000001010000012002045D4C28B42120A4C7
 
Using this sdp I'm able to see the video with vlc but not with gstreamer, the gstreamer error is:
 

bind failed -1: Impossibile assegnare l'indirizzo richiesto (99)
 

so I modified the sdp changing the line
 

c=IN IP4 192.168.2.18
 

in 
 

c=IN IP4 192.168.2.101
 

this way I'm able to see the video but it disappear after few seconds:

gst-launch-0.10 -v filesrc location=test.sdp.2 ! decodebin ! autovideosink
 


Impostazione della pipeline a PAUSED ... 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = application/sdp 
 La pipeline è viva e non necessita il PREROLL ... 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstPad:sink: caps = application/sdp 
 Impostazione della pipeline a PLAYING ... 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0: latency = 200 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstUDPSrc:udpsrc0: timeout = 10000000 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0: ntp-ns-base = 3451230815497065000 
 New clock: GstSystemClock 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstUDPSrc:udpsrc0: timeout = 0 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstGhostPad:recv_rtp_src_0_1256991181_96.GstProxyPad:proxypad6: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_0_1256991181_96.GstProxyPad:proxypad5: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:src: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, codec_data=(buffer)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, codec_data=(buffer)000001b001000001b58913000001000000012000c48d88002d14043c1463000001b24c61766335322e31352e30 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 
 /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 
 /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0.GstProxyPad:proxypad7: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 
 /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 
 /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = video/x-raw-yuv, width=(int)640, height=(int)480, framerate=(fraction)5/1, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_0: caps = application/x-rtcp 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = application/x-rtcp 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtcp 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_0: caps = application/x-rtcp 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_0.GstProxyPad:proxypad4: caps = application/x-rtcp 
 Ottenuto EOS dall'elemento «pipeline0». 
 Execution ended after 4005565931 ns. 
 Impostazione della pipeline a PAUSED ... 
 Impostazione della pipeline a READY ... 
 /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = NULL 
 /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:src: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:sink: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = NULL 
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_0: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:recv_rtp_src_0_1256991181_96: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0/GstRtpPtDemux:rtpptdemux0.GstPad:src_96: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0.GstGhostPad:send_rtcp_src_0: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstRtpBin:rtpbin0/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0.GstPad:sink: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstSDPDemux:sdpdemux0/GstUDPSink:udpsink0.GstPad:sink: caps = NULL
 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
 Impostazione della pipeline a NULL ...
 Esecuzione FREE su pipeline ...
Comment 1 Wim Taymans 2009-05-19 15:38:00 UTC
Created attachment 134955 [details] [review]
possible patch

- Only subscribe udpsrc to multicast addresses, else we just listen on a local
  port
- don't send any RTCP when we are not dealing with multicast because we don't know
  where we should send the data.
Comment 2 Wim Taymans 2009-05-19 15:38:27 UTC
I was going to push that patch after the freeze.
Comment 3 Nicola 2009-05-19 16:36:21 UTC
Thanks,

as temporary workaround we can get the caps from the sdp in my case a working configuration is something like this:

gst-launch-0.10 udpsrc port=5324 caps="application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)3, config=(string)000001B003000001B509000001010000012002045D4C28B42120A4C7" ! udpsink host=192.168.2.101 port=5000

regards
Nicola
Comment 4 Wim Taymans 2009-05-21 20:22:59 UTC
commit e9eae335f1164c6d57b18d5038c6df2835bfd563
Author: Wim Taymans <wim.taymans@collabora.co.uk>
Date:   Mon May 18 23:21:47 2009 +0200

    sdpdemux: rework RTCP sending and RTP receiving
    
    When we are dealing with multiast, create the udp src and sink elements pointing
    to the multicast addresses. When we are doing unicast, receive data on the local
    ports and don't send RTCP because we don't know where we have to send it.
    
    Fixes #583188