rtsp server. second and subsequent clients disconnect after few seconds

Борис bumatov at gmail.com
Thu Jul 1 20:58:43 UTC 2021


Hi. i created rtsp server with shared factory using
gst_rtsp_media_set_shared(media, TRUE); to allow multiple clients to
connect.

Then i use this test pipeline to check how server works with few clients:

gst-launch-1.0 -v rtspsrc location=rtsp://127.0.0.1:5759/vd latency=0
protocols=GST_RTSP_LOWER_TRANS_TCP !
application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse
! tee name=t t. ! queue ! avdec_h264 direct-rendering=FALSE ! videoconvert
! d3dvideosink sync=false

with one client everything works ok, but when i connect as second client it
works for few seconds, then freezes (new frames doesn't appear on
d3dvideosink and exection time doesn't update) and after 5-10 second
disconnects. That's what i see in terminal:

/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0:
stats = application/x-rtp-session-stats, rtx-drop-count=(uint)0,
sent-nack-count=(uint)0, recv-nack-count=(uint)0,
source-stats=(GValueArray)< "application/x-rtp-source-stats\,\
ssrc\=\(uint\)517675450\,\ internal\=\(boolean\)false\,\
validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\
is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\
seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)90000\,\
octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\
octets-received\=\(guint64\)5192271\,\ packets-received\=\(guint64\)4949\,\
bytes-received\=\(guint64\)5390231\,\ bitrate\=\(guint64\)3288913\,\
packets-lost\=\(int\)-1\,\ jitter\=\(uint\)415\,\
sent-pli-count\=\(uint\)0\,\ recv-pli-count\=\(uint\)0\,\
sent-fir-count\=\(uint\)0\,\ recv-fir-count\=\(uint\)0\,\
sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\
recv-packet-rate\=\(uint\)4235\,\ have-sr\=\(boolean\)true\,\
sr-ntptime\=\(guint64\)16467594665571962480\,\
sr-rtptime\=\(uint\)2449176275\,\ sr-octet-count\=\(uint\)54907582\,\
sr-packet-count\=\(uint\)52512\,\ sent-rb\=\(boolean\)true\,\
sent-rb-fractionlost\=\(uint\)0\,\ sent-rb-packetslost\=\(int\)-1\,\
sent-rb-exthighestseq\=\(uint\)55564\,\ sent-rb-jitter\=\(uint\)415\,\
sent-rb-lsr\=\(uint\)2786683528\,\ sent-rb-dlsr\=\(uint\)704929\,\
have-rb\=\(boolean\)false\,\ rb-fractionlost\=\(uint\)0\,\
rb-packetslost\=\(int\)0\,\ rb-exthighestseq\=\(uint\)0\,\
rb-jitter\=\(uint\)0\,\ rb-lsr\=\(uint\)0\,\ rb-dlsr\=\(uint\)0\,\
rb-round-trip\=\(uint\)0\;", "application/x-rtp-source-stats\,\
ssrc\=\(uint\)3404924287\,\ internal\=\(boolean\)true\,\
validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\
is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\
seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)-1\,\
octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\
octets-received\=\(guint64\)0\,\ packets-received\=\(guint64\)0\,\
bytes-received\=\(guint64\)0\,\ bitrate\=\(guint64\)0\,\
packets-lost\=\(int\)0\,\ jitter\=\(uint\)0\,\ sent-pli-count\=\(uint\)0\,\
recv-pli-count\=\(uint\)0\,\ sent-fir-count\=\(uint\)0\,\
recv-fir-count\=\(uint\)0\,\ sent-nack-count\=\(uint\)0\,\
recv-nack-count\=\(uint\)0\,\ recv-packet-rate\=\(uint\)0\,\
have-sr\=\(boolean\)false\,\ sr-ntptime\=\(guint64\)0\,\
sr-rtptime\=\(uint\)0\,\ sr-octet-count\=\(uint\)0\,\
sr-packet-count\=\(uint\)0\;" >,
rtx-cou/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0:
stats = application/x-rtp-session-stats, rtx-drop-count=(uint)0,
sent-nack-count=(uint)0, recv-nack-count=(uint)0,
source-stats=(GValueArray)< "application/x-rtp-source-stats\,\
ssrc\=\(uint\)517675450\,\ internal\=\(boolean\)false\,\
validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\
is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\
seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)90000\,\
octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\
octets-received\=\(guint64\)5192271\,\ packets-received\=\(guint64\)4949\,\
bytes-received\=\(guint64\)5390231\,\ bitrate\=\(guint64\)3288913\,\
packets-lost\=\(int\)-1\,\ jitter\=\(uint\)415\,\
sent-pli-count\=\(uint\)0\,\ recv-pli-count\=\(uint\)0\,\
sent-fir-count\=\(uint\)0\,\ recv-fir-count\=\(uint\)0\,\
sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\
recv-packet-rate\=\(uint\)4235\,\ have-sr\=\(boolean\)true\,\
sr-ntptime\=\(guint64\)16467594665571962480\,\
sr-rtptime\=\(uint\)2449176275\,\ sr-octet-count\=\(uint\)54907582\,\
sr-packet-count\=\(uint\)52512\,\ sent-rb\=\(boolean\)true\,\
sent-rb-fractionlost\=\(uint\)0\,\ sent-rb-packetslost\=\(int\)-1\,\
sent-rb-exthighestseq\=\(uint\)55564\,\ sent-rb-jitter\=\(uint\)415\,\
sent-rb-lsr\=\(uint\)2786683528\,\ sent-rb-dlsr\=\(uint\)704929\,\
have-rb\=\(boolean\)false\,\ rb-fractionlost\=\(uint\)0\,\
rb-packetslost\=\(int\)0\,\ rb-exthighestseq\=\(uint\)0\,\
rb-jitter\=\(uint\)0\,\ rb-lsr\=\(uint\)0\,\ rb-dlsr\=\(uint\)0\,\
rb-round-trip\=\(uint\)0\;", "application/x-rtp-source-stats\,\
ssrc\=\(uint\)3404924287\,\ internal\=\(boolean\)true\,\
validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\
is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\
seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)-1\,\
octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\
octets-received\=\(guint64\)0\,\ packets-received\=\(guint64\)0\,\
bytes-received\=\(guint64\)0\,\ bitrate\=\(guint64\)0\,\
packets-lost\=\(int\)0\,\ jitter\=\(uint\)0\,\ sent-pli-count\=\(uint\)0\,\
recv-pli-count\=\(uint\)0\,\ sent-fir-count\=\(uint\)0\,\
recv-fir-count\=\(uint\)0\,\ sent-nack-count\=\(uint\)0\,\
recv-nack-count\=\(uint\)0\,\ recv-packet-rate\=\(uint\)0\,\
have-sr\=\(boolean\)false\,\ sr-ntptime\=\(guint64\)0\,\
sr-rtptime\=\(uint\)0\,\ sr-octet-count\=\(uint\)0\,\
sr-packet-count\=\(uint\)0\;" >, rtx-count=(uint)0,
recv-rtx-req-count=(uint)0, sent-rtx-req-count=(uint)0;
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0:
stats = application/x-rtp-session-stats, rtx-drop-count=(uint)0,
sent-nack-count=(uint)0, recv-nack-count=(uint)0,
source-stats=(GValueArray)< "application/x-rtp-source-stats\,\
ssrc\=\(uint\)3404924287\,\ internal\=\(boolean\)true\,\
validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\
is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\
seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)-1\,\
octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\
octets-received\=\(guint64\)0\,\ packets-received\=\(guint64\)0\,\
bytes-received\=\(guint64\)0\,\ bitrate\=\(guint64\)0\,\
packets-lost\=\(int\)0\,\ jitter\=\(uint\)0\,\ sent-pli-count\=\(uint\)0\,\
recv-pli-count\=\(uint\)0\,\ sent-fir-count\=\(uint\)0\,\
recv-fir-count\=\(uint\)0\,\ sent-nack-count\=\(uint\)0\,\
recv-nack-count\=\(uint\)0\,\ recv-packet-rate\=\(uint\)0\,\
have-sr\=\(boolean\)false\,\ sr-ntptime\=\(guint64\)0\,\
sr-rtptime\=\(uint\)0\,\ sr-octet-count\=\(uint\)0\,\
sr-packet-count\=\(uint\)0\;" >, rtx-count=(uint)0,
recv-rtx-req-count=(uint)0, sent-rtx-req-count=(uint)0;

Got EOS from element "pipeline0".

Execution ended after 0:00:39.694382000

i don't see any error here, so i can't uderstand what is wrong... Does
anybody know what i'm doing wrong?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20210701/7a33a8fa/attachment.htm>


More information about the gstreamer-devel mailing list