我正在尝试以尽可能低的延迟发送和接收视频流。对于发送,我在 linux 上使用 gstreamer:
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
此管道将视频发送到端口 2000,并使用端口 2001 和 2005 进行一些“神奇”的 rtcp 同步。
如果我在 linux 上使用 gstreamer 作为接收器,效果很好;我得到低于 400 毫秒的延迟。
但是,在 Windows 上接收时,我很难获得相同的性能。我尝试了什么:
- VLC。似乎根本不支持 rtcp。
- 用于 Windows 的 gstreamer。似乎工作起来很奇怪,会产生巨大的延迟,甚至是幻灯片而不是视频;rtcp 似乎不起作用。
- ffmpeg。打开 rtcp 端口,但它根本不影响任何东西。-nobuffer 选项的延迟约为 1000 毫秒。
我还有什么选择吗?任何类型的库或sdk?