ビデオ ストリームの送受信をできる限り遅延させないようにしています。送信には、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?