gstreamer udp Streaming is slow

powerclam picture powerclam · Jun 28, 2011 · Viewed 9k times · Source

I'm working on a videochat application and am having trouble with UDP streaming vs TCP.

When I use the pipelines below, the video streams acceptably. (The application itself is in python, but the pipelines are essentially as below)

sender: 

gst-launch-0.10 v4l2src ! video/x-raw-yuv,width=320,height=240 ! 
    theoraenc ! oggmux ! tcpclientsink host=nnn.nnn.nnn.nnn port = 5000

receiver: 

gst-launch-0.10 tcpserversrc host=nnn.nnn.nnn.nnn port=5000 
    ! decodebin ! xvimagesink

However, since this app is to perform across/through NAT, I require UDP streaming. When I switch the tcpserversrc to a "udpsrc port=5000" and the tcpclientsink to a "udpsink host = nnn.nnn.nnn.nnnn port=5000", performance plummets to the point where the receiving computer gets one single frame every 5 seconds or so. (This occurs even when both streams are executed on the same machine)

The sending pipeline generates the following (once):

WARNING: from element /GstPipeline:pipeline0/GstUDPSink:udpsink0: 
    Internal data flow problem.
    Additional debug info:
    gstbasesink.c(3492): gst_base_sink_chain_unlocked (): /GstPipeline:pipeline0
    /GstUDPSink:udpsink0:
    Received buffer without a new-segment. Assuming timestamps start from 0.

...and the receiving pipeline generates (every 20 seconds or so):

WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: 
    A lot of buffers are being dropped.
    Additional debug info:
    gstbasesink.c(2739): gst_base_sink_is_too_late (): /GstPipeline:pipeline0
    /GstXvImageSink:xvimagesink0:
    There may be a timestamping problem, or this computer is too slow.

I've read docs and manpages, fiddled with various parameters to the udpsink, all to no good effect. Can anyone direct me to the (no doubt obvious) thing that I'm completely not getting? Thanks in advance :)

Answer

Fuxi picture Fuxi · Nov 20, 2011

I had the same problem. Try setting

sync=false

on tcpclientsink and xvimagesink