I'm trying to send and receive video stream with delay as low as possible. For sending I use gstreamer on linux:
gst-launch-1.0 -v rtpbin ntp-sync=false name=rtpbin \
v4l2src do-timestamp=true ! jpegenc ! rtpjpegpay ! rtpbin.send_rtp_sink_0 \
rtpbin.send_rtp_src_0 ! udpsink port=2000 host=192.168.1.10 name=vrtpsink \
rtpbin.send_rtcp_src_0 ! udpsink port=2001 host=192.168.1.10 sync=false async=false name=vrtcpsink \
udpsrc port=2005 name=vrtpsrc ! rtpbin.recv_rtcp_sink_0
this pipeline sends video to port 2000 and uses ports 2001 and 2005 for some 'magical' rtcp synchronization.
If I use gstreamer on linux as a receiver, it works great; I get delays below 400 ms.
However, I'm struggling to get the same performance when receiving on windows. What did I try:
- VLC. Doesn't seem to support rtcp at all.
- gstreamer for windows. Seems to work strange, producing huge delays or even slideshows instead of video; rtcp doesn't seem to work.
- ffmpeg. Opens rtcp port but it doesn't affect anything at all. Delay with -nobuffer option is about 1000 ms.
Do I have any options left? Any kind of library or sdk?