I'm trying to get ultra low video-streaming latency on the local machine.
With udpsink & udpsrc elements the latency is less than 20ms. With
tcpserversink and tcpclientsrc the latency is more than 300ms.
I have a c++ application where I'm able to see the latecy.
My pipelines look like this:
# udp streamer & receiver on local machine
gst-launch-1.0 -v videotestsrc is-live=true ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=127.0.0.1 port=5000
gst-launch-1.0 -v udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
How I can get smaller latency with tcp. It seems that tcpserversink has
local buffering which causes the latency. Is it possible to turn it off?
unit-format=buffers units-max=1 buffers-max=1 but it didn't help. Any other
clue why we see the latency on the local machine?