GNOME Bugzilla – Bug 583188
Problem with sdp: bind failed or video disappear after few seconds
Last modified: 2009-05-21 20:22:59 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 ...
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.
I was going to push that patch after the freeze.
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
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