Delay at the beginning of UDP/RTP streaming

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Delay at the beginning of UDP/RTP streaming

Miloš Selečéni
Hi I've basic (server/client) pipeline for video streaming based on UDP/RTP protocols. Things are working but at the beginning I've got huge stall at the client side. 

There are two options how you can start your connection.

1) start the server first, then start your client   [works OK]

2) start the client first then start server [big stall at the beginning]

In first option there is no stall when client connect to the server at the time when the server is already streaming.

In second option there is few seconds stall at client side. Even though (according to tcpdump and Wireshark) UDP packets are received at client side from the very beginning. I found out that this happens when the jitterbuffer starts reseting 
-- jitterbuffer 3009 pending timers > 3000 - resetting
after few jitterbuffer resets It either recover and continue normaly or freeze and reseting only
Do you have any idea why this is happening ? 

My pipelines:
SERVER:
DEST=172.22.10.57
VSOURCE_3="filesrc location=... ! qtdemux ! h264parse ! avdec_h264"
VENC_ts="cmptoj2kenc ! mpegtsmux ! rtpmp2tpay"
VRTPSINK="udpsink port=5000 host=$DEST ts-offset=$VOFFSET name=vrtpsink"
VRTCPSINK="udpsink port=5001 host=$DEST sync=false async=false name=vrtcpsink"
VRTCPSRC="udpsrc port=5005 name=vrtpsrc"VENC_ts="cmptoj2kenc ! mpegtsmux ! rtpmp2tpay"

./gst-launch-1.0 --gst-debug=2,cmptoj2kenc:5 rtpbin name=rtpbin \
$VSOURCE_3 ! $VENC_ts ! rtprtxqueue ! rtpbin.send_rtp_sink_0 \
rtpbin.send_rtp_src_0 ! $VRTPSINK \
rtpbin.send_rtcp_src_0 ! $VRTCPSINK \
$VRTCPSRC ! rtpbin.recv_rtcp_sink_0

CLIENT:

DEST=172.22.10.85
VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)MP2T-ES,payload=(int)33"
VIDEO_DEC_ts="rtpmp2tdepay ! tsdemux ! cmptoj2kdec colorspace=yuv"
VIDEO_SINK="videoconvert ! autovideosink sync=false"
LATENCY=200

./gst-launch-1.0 --gst-debug=2,cmptoj2kdec:5 rtpbin name=rtpbin buffer-mode=buffer latency=$LATENCY    \
    udpsrc caps=$VIDEO_CAPS port=5000 buffer-size=2000000 ! rtpbin.recv_rtp_sink_0                     \
      rtpbin. ! $VIDEO_DEC_ts ! $VIDEO_SINK                                                            \
    udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0                                                         \
      rtpbin.send_rtcp_src_0 ! udpsink port=5005 host=$DEST sync=false async=false

Miloš Selečéni

GPU Developer | Comprimato Systems s.r.o.


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Delay at the beginning of UDP/RTP streaming

boxerab@gmail.com
Hi Milos,

I see you are using custom plugins cmptoj2k* for jpeg 2000 encoding/decoding. It may be difficult to assess the problem, given that we don't know how these plugins operate.
Is the rest of your pipeline using standard gstreamer plugins, or have you customized any of the other plugins?

Thanks,
Aaron


On Wed, Jun 22, 2016 at 4:08 AM, Miloš Selečéni <[hidden email]> wrote:
Hi I've basic (server/client) pipeline for video streaming based on UDP/RTP protocols. Things are working but at the beginning I've got huge stall at the client side. 

There are two options how you can start your connection.

1) start the server first, then start your client   [works OK]

2) start the client first then start server [big stall at the beginning]

In first option there is no stall when client connect to the server at the time when the server is already streaming.

In second option there is few seconds stall at client side. Even though (according to tcpdump and Wireshark) UDP packets are received at client side from the very beginning. I found out that this happens when the jitterbuffer starts reseting 
-- jitterbuffer 3009 pending timers > 3000 - resetting
after few jitterbuffer resets It either recover and continue normaly or freeze and reseting only
Do you have any idea why this is happening ? 

My pipelines:
SERVER:
DEST=172.22.10.57
VSOURCE_3="filesrc location=... ! qtdemux ! h264parse ! avdec_h264"
VENC_ts="cmptoj2kenc ! mpegtsmux ! rtpmp2tpay"
VRTPSINK="udpsink port=5000 host=$DEST ts-offset=$VOFFSET name=vrtpsink"
VRTCPSINK="udpsink port=5001 host=$DEST sync=false async=false name=vrtcpsink"
VRTCPSRC="udpsrc port=5005 name=vrtpsrc"VENC_ts="cmptoj2kenc ! mpegtsmux ! rtpmp2tpay"

./gst-launch-1.0 --gst-debug=2,cmptoj2kenc:5 rtpbin name=rtpbin \
$VSOURCE_3 ! $VENC_ts ! rtprtxqueue ! rtpbin.send_rtp_sink_0 \
rtpbin.send_rtp_src_0 ! $VRTPSINK \
rtpbin.send_rtcp_src_0 ! $VRTCPSINK \
$VRTCPSRC ! rtpbin.recv_rtcp_sink_0

CLIENT:

DEST=172.22.10.85
VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)MP2T-ES,payload=(int)33"
VIDEO_DEC_ts="rtpmp2tdepay ! tsdemux ! cmptoj2kdec colorspace=yuv"
VIDEO_SINK="videoconvert ! autovideosink sync=false"
LATENCY=200

./gst-launch-1.0 --gst-debug=2,cmptoj2kdec:5 rtpbin name=rtpbin buffer-mode=buffer latency=$LATENCY    \
    udpsrc caps=$VIDEO_CAPS port=5000 buffer-size=2000000 ! rtpbin.recv_rtp_sink_0                     \
      rtpbin. ! $VIDEO_DEC_ts ! $VIDEO_SINK                                                            \
    udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0                                                         \
      rtpbin.send_rtcp_src_0 ! udpsink port=5005 host=$DEST sync=false async=false

Miloš Selečéni

GPU Developer | Comprimato Systems s.r.o.


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel