SRT: srt client cannot view video after a period of time or access another time
If I connect from client to server second time or connect after server started a period of time, client side cannot show up video, client reports discont detected.
# Server end command:
GST_DEBUG=srt*:5 gst-launch-1.0 v4l2src ! videoconvert ! video/x-raw ! nvh265enc zerolatency=0 preset=low-latency-hq ! video/x-h265 ! mpegtsmux ! srtsink uri=srt://:7001/ mode=listener latency=0 wait-for-connection=true
#Client end command:
GST_DEBUG=srt*:5 gst-launch-1.0 srtsrc mode=caller uri=srt://127.0.0.1:7001/ ! tsdemux latency=0 ! h265parse ! msdkh265dec ! videoconvert ! autovideosink sync=false
Server Log:
0:00:00.267970046 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:266:gst_srt_object_new:<GstSRTSink@0x5647d7682820> Starting up SRT
0:00:00.268029452 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:704:gst_srt_object_set_uri:<GstSRTSink@0x5647d7682820> set uri to (host: 127.0.0.1, port: 7001) with 0 query strings
0:00:00.268042558 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:704:gst_srt_object_set_uri:<srtsink0> set uri to (host: (null), port: 7001) with 0 query strings
Setting pipeline to PAUSED ...
0:00:00.269183269 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:1116:gst_srt_object_open_internal:<srtsink0> Given uri doesn't have hostname or address. Use any (0.0.0.0) and setting listener mode
0:00:00.269193812 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:1123:gst_srt_object_open_internal:<srtsink0> Opening SRT socket with parameters: application/x-srt-params, poll-timeout=(int)-1, latency=(int)0, mode=(GstSRTConnectionMode)listener, localaddress=(string)0.0.0.0, localport=(uint)7001;
0:00:00.269234766 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:167:gst_srt_object_resolve:<srtsink0> IP address for host 0.0.0.0 is 0.0.0.0
0:00:00.269243179 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:167:gst_srt_object_resolve:<srtsink0> IP address for host 0.0.0.0 is 0.0.0.0
0:00:00.269266457 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:892:gst_srt_object_wait_connect:<srtsink0> Binding to 0.0.0.0 (port: 7001)
0:00:00.269315822 890307 0x5647d71ad150 DEBUG srtobject gstsrtobject.c:908:gst_srt_object_wait_connect:<srtsink0> Starting to listen on bind socket
0:00:00.269356542 890307 0x5647d71a29e0 DEBUG srtobject gstsrtobject.c:774:thread_func:<srtsink0> Waiting a request from caller
Pipeline is live and does not need PREROLL ...
Got context from element 'nvh265enc0': gst.cuda.context=context, gst.cuda.context=(GstCudaContext)"\(GstCudaContext\)\ cudacontext0", cuda-device-id=(int)0;
Got context from element 'nvh265enc0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:01.358090528 890307 0x5647d71a2c00 DEBUG srtsink gstsrtsink.c:230:gst_srt_sink_set_caps:<srtsink0> setcaps video/mpegts, systemstream=(boolean)true, packetsize=(int)188
0:00:01.358103470 890307 0x5647d71a2c00 DEBUG srtsink gstsrtsink.c:238:gst_srt_sink_set_caps:<srtsink0> 'streamheader' field not present
0:00:01.358108134 890307 0x5647d71a2c00 DEBUG srtsink gstsrtsink.c:267:gst_srt_sink_set_caps:<srtsink0> Collected streamheaders: 0 buffers
0:00:01.358171178 890307 0x5647d71a2c00 DEBUG srtsink gstsrtsink.c:230:gst_srt_sink_set_caps:<srtsink0> setcaps video/mpegts, systemstream=(boolean)true, packetsize=(int)188, streamheader=(buffer)< 47400031a600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000b00d0001c100000001e020a2c32941, 47402031a100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0002b0120001c10000e041f00024e041f00093dfabf9 >
0:00:01.358178242 890307 0x5647d71a2c00 DEBUG srtsink gstsrtsink.c:246:gst_srt_sink_set_caps:<srtsink0> 'streamheader' field holds array
0:00:01.358183379 890307 0x5647d71a2c00 DEBUG srtsink gstsrtsink.c:267:gst_srt_sink_set_caps:<srtsink0> Collected streamheaders: 2 buffers
0:00:01.358689121 890307 0x5647d71a2c00 INFO srtobject gstsrtobject.c:1238:gst_srt_object_wait_caller:<srtsink0> Waiting for connection
0:00:06.430542807 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1345:worker_ProcessConnectionRequest: : PASSING request from: 127.0.0.1:42944 to agent:361027369
0:00:06.430606596 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1365:worker_ProcessConnectionRequest: : Listener managed the connection request from: 127.0.0.1:42944 result:waveahand
0:00:06.430636232 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1345:worker_ProcessConnectionRequest: : PASSING request from: 127.0.0.1:42944 to agent:361027369
0:00:06.430806914 890307 0x7fc73c0044a0 DEBUG srtlib core.cpp:2541:processSrtMsg_HSREQ: : HSREQ/rcv: cmd=1(HSREQ) len=12 vers=0x10402 opts=0xbf delay=125
0:00:06.430829593 890307 0x7fc73c0044a0 DEBUG srtlib core.cpp:10567:processConnectRequest: : listen ret: -1 - conclusion
0:00:06.430833934 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1365:worker_ProcessConnectionRequest: : Listener managed the connection request from: 127.0.0.1:42944 result:waveahand
0:00:06.430863144 890307 0x5647d71a29e0 DEBUG srtobject gstsrtobject.c:822:thread_func:<srtsink0> Accept to connect 361027368
0:00:06.430876182 890307 0x5647d71a29e0 DEBUG srtobject gstsrtobject.c:774:thread_func:<srtsink0> Waiting a request from caller
0:00:06.430881945 890307 0x5647d71a2c00 DEBUG srtobject gstsrtobject.c:1243:gst_srt_object_wait_caller:<srtsink0> Got a connection
0:00:06.430893722 890307 0x5647d71a2c00 DEBUG srtobject gstsrtobject.c:1407:gst_srt_object_send_headers:<srtsink0> Sending 2 stream headers
0:00:09.683059011 890307 0x5647d71a2c00 WARN srtobject gstsrtobject.c:1488:gst_srt_object_write_to_callers:<srtsink0> Dropping caller 361027368: Connection was broken
0:00:09.683117400 890307 0x5647d71a2c00 INFO srtobject gstsrtobject.c:1238:gst_srt_object_wait_caller:<srtsink0> Waiting for connection
0:00:11.997486867 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1345:worker_ProcessConnectionRequest: : PASSING request from: 127.0.0.1:32936 to agent:361027369
0:00:11.997523224 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1365:worker_ProcessConnectionRequest: : Listener managed the connection request from: 127.0.0.1:32936 result:waveahand
0:00:11.997633245 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1345:worker_ProcessConnectionRequest: : PASSING request from: 127.0.0.1:32936 to agent:361027369
0:00:11.997776633 890307 0x7fc73c0044a0 DEBUG srtlib core.cpp:2541:processSrtMsg_HSREQ: : HSREQ/rcv: cmd=1(HSREQ) len=12 vers=0x10402 opts=0xbf delay=125
0:00:11.997799388 890307 0x7fc73c0044a0 DEBUG srtlib core.cpp:10567:processConnectRequest: : listen ret: -1 - conclusion
0:00:11.997804137 890307 0x7fc73c0044a0 DEBUG srtlib queue.cpp:1365:worker_ProcessConnectionRequest: : Listener managed the connection request from: 127.0.0.1:32936 result:waveahand
0:00:11.997873656 890307 0x5647d71a29e0 DEBUG srtobject gstsrtobject.c:822:thread_func:<srtsink0> Accept to connect 361027367
0:00:11.997885926 890307 0x5647d71a29e0 DEBUG srtobject gstsrtobject.c:774:thread_func:<srtsink0> Waiting a request from caller
0:00:11.997889928 890307 0x5647d71a2c00 DEBUG srtobject gstsrtobject.c:1243:gst_srt_object_wait_caller:<srtsink0> Got a connection
0:00:11.997905067 890307 0x5647d71a2c00 DEBUG srtobject gstsrtobject.c:1407:gst_srt_object_send_headers:<srtsink0> Sending 2 stream headers
0:01:13.790101739 890307 0x5647d71a2c00 WARN srtobject gstsrtobject.c:1488:gst_srt_object_write_to_callers:<srtsink0> Dropping caller 361027367: Connection was broken
0:01:13.790159327 890307 0x5647d71a2c00 INFO srtobject gstsrtobject.c:1238:gst_srt_object_wait_caller:<srtsink0> Waiting for connection
Client Log:
0:00:00.008767670 890498 0x55ab30985150 DEBUG srtobject gstsrtobject.c:266:gst_srt_object_new:<GstSRTSrc@0x55ab30b08160> Starting up SRT
0:00:00.008826069 890498 0x55ab30985150 DEBUG srtobject gstsrtobject.c:704:gst_srt_object_set_uri:<GstSRTSrc@0x55ab30b08160> set uri to (host: 127.0.0.1, port: 7001) with 0 query strings
0:00:00.008847044 890498 0x55ab30985150 DEBUG srtobject gstsrtobject.c:704:gst_srt_object_set_uri:<srtsrc0> set uri to (host: 127.0.0.1, port: 7001) with 0 query strings
libva info: VA-API version 1.10.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_10
libva info: va_openDriver() returns 0
Setting pipeline to PAUSED ...
libva info: VA-API version 1.10.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_10
libva info: va_openDriver() returns 0
0:00:00.018372298 890498 0x55ab30985150 DEBUG srtobject gstsrtobject.c:1123:gst_srt_object_open_internal:<srtsrc0> Opening SRT socket with parameters: application/x-srt-params, poll-timeout=(int)-1, latency=(int)125, mode=(GstSRTConnectionMode)caller;
0:00:00.018439716 890498 0x55ab30985150 DEBUG srtobject gstsrtobject.c:167:gst_srt_object_resolve:<srtsrc0> IP address for host 127.0.0.1 is 127.0.0.1
Pipeline is live and does not need PREROLL ...
Got context from element 'msdkh265dec0': gst.msdk.Context=context, gst.msdk.Context=(GstMsdkContext)"\(GstMsdkContext\)\ msdkcontext1";
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.019205379 890498 0x7f69380078a0 DEBUG srtlib core.cpp:5044:postConnect: : @51072215:Connection established to: 127.0.0.1:7001
0:00:00.144681659 890498 0x55ab30b7b4c0 WARN srtsrc gstsrtsrc.c:188:gst_srt_src_fill:<srtsrc0> discont detected 1008407833 (expected: 0)