Answer for how to stop and restart a single stream
Written by gparmigiani on 18 Mar 2015 . Posted in
we’ve set up a test environment with 1 server machine and another client machine.
on the server we have a folder named cameras, inside the EvoStream "media" folder, containing a great number of .vod files,
each one containing a similar configuration (where %1 is the last part of the uri changing for each camera):
uri=rtsp://some.ip.camera.%1/testedandworking
forceTCP=true
isAudio=false
if we connect with vlc with no stress we usually manage to connect,
but when we perform a "stress" test,
connecting to all streams with vlc in -I dummy mode and recording (so that we can examine the files later),
from a cmd executing a batch file,
we get an error if we don’t provide a minimum latency (let’s say 500 milliseconds) between one connection and following ones.
here’s the error message we receive on cmd console of server
E:WorkProjects3536rel_1.6sourcesthelibincludenetio/iocp/tcpconnector.h:1
35 Outbound connection established: (Far: 192.168.30.165:554; Near: 192.168.29.6
6:58068) CTCP(776) <-> TCP(3542) <-> [RTSP(3543)]
......sourcesthelibsrcnetioiocpiohandlermanager.cpp:126 Handlers count c
hanged: 67->66 IOHT_TCP_CONNECTOR
E:WorkProjects3536rel_1.6sourcesthelibincludenetio/iocp/tcpconnector.h:8
6 TCPConnector failed. Error code was: 121
......sourcesthelibsrcprotocolsrtpbasertspappprotocolhandler.cpp:342 Con
nection failed:
<MAP name="" isArray="false">
<MAP name="_callback" isArray="false">
<UINT32 name="protocolID">2483</UINT32>
</MAP>
<STR name="_isVod">1</STR>
<UINT32 name="appId">1</UINT32>
<STR name="audioCodecBytes"></STR>
<UINT32 name="configId">196</UINT32>
<STR name="connectionType">pull</STR>
<MAP name="customParameters" isArray="false">
<MAP name="externalStreamConfig" isArray="false">
<MAP name="_callback" isArray="false">
<UINT32 name="protocolID">2483</UINT32>
</MAP>
<STR name="_isVod">1</STR>
<STR name="audioCodecBytes"></STR>
<UINT32 name="configId">196</UINT32>
<STR name="emulateUserAgent">EvoStream Media Server (www.evostream.c
om) player</STR>
<BOOL name="forceTcp">false</BOOL>
<STR name="httpProxy"></STR>
<BOOL name="isAudio">false</BOOL>
<BOOL name="keepAlive">false</BOOL>
<STR name="localStreamName">cameras/cam_165/cam_165_4.vod</STR>
<UINT8 name="operationType">1</UINT8>
<STR name="pageUrl"></STR>
<STR name="ppsBytes"></STR>
<INT64 name="rangeEnd">-1</INT64>
<INT64 name="rangeStart">-2</INT64>
<UINT64 name="rtcpDetectionInterval">10</UINT64>
<BOOL name="sendRenewStream">false</BOOL>
<STR name="spsBytes"></STR>
<STR name="ssmIp"></STR>
<STR name="swfUrl"></STR>
<STR name="tcUrl"></STR>
<UINT64 name="tos">256</UINT64>
<UINT64 name="ttl">256</UINT64>
<MAP name="uri" isArray="false">
<STR name="document"></STR>
<STR name="documentPath">/</STR>
<STR name="documentWithFullParameters"></STR>
<STR name="fullDocumentPath">/</STR>
<STR name="fullDocumentPathWithParameters">/</STR>
<STR name="fullParameters"></STR>
<STR name="fullUri">rtsp://192.168.30.165</STR>
<STR name="fullUriWithAuth">rtsp://192.168.30.165</STR>
<STR name="host">192.168.30.165</STR>
<STR name="ip">192.168.30.165</STR>
<STR name="originalUri">rtsp://192.168.30.165</STR>
<MAP name="parameters" isArray="false">
</MAP>
<STR name="password"></STR>
<UINT16 name="port">554</UINT16>
<BOOL name="portSpecified">false</BOOL>
<STR name="scheme">rtsp</STR>
<STR name="userName"></STR>
</MAP>
</MAP>
<NULL name="httpProxy"></NULL>
</MAP>
<STR name="emulateUserAgent">EvoStream Media Server (www.evostream.com) play
er</STR>
<BOOL name="forceTcp">false</BOOL>
<STR name="httpProxy"></STR>
<BOOL name="isAudio">false</BOOL>
<BOOL name="isClient">true</BOOL>
<BOOL name="keepAlive">false</BOOL>
<STR name="localStreamName">cameras/cam_165/cam_165_4.vod</STR>
<UINT8 name="operationType">1</UINT8>
<STR name="pageUrl"></STR>
<STR name="ppsBytes"></STR>
<INT64 name="rangeEnd">-1</INT64>
<INT64 name="rangeStart">-2</INT64>
<UINT64 name="rtcpDetectionInterval">10</UINT64>
<BOOL name="sendRenewStream">false</BOOL>
<STR name="spsBytes"></STR>
<STR name="ssmIp"></STR>
<STR name="swfUrl"></STR>
<STR name="tcUrl"></STR>
<UINT64 name="tos">256</UINT64>
<UINT64 name="ttl">256</UINT64>
<MAP name="uri" isArray="false">
<STR name="document"></STR>
<STR name="documentPath">/</STR>
<STR name="documentWithFullParameters"></STR>
<STR name="fullDocumentPath">/</STR>
<STR name="fullDocumentPathWithParameters">/</STR>
<STR name="fullParameters"></STR>
<STR name="fullUri">rtsp://192.168.30.165</STR>
<STR name="fullUriWithAuth">rtsp://192.168.30.165</STR>
<STR name="host">192.168.30.165</STR>
<STR name="ip">192.168.30.165</STR>
<STR name="originalUri">rtsp://192.168.30.165</STR>
<MAP name="parameters" isArray="false">
</MAP>
<STR name="password"></STR>
<UINT16 name="port">554</UINT16>
<BOOL name="portSpecified">false</BOOL>
<STR name="scheme">rtsp</STR>
<STR name="userName"></STR>
</MAP>
</MAP>
......sourcesapplicationsevoroutersrcapplicationoriginapplication.cpp:16
21 Unable to set pull/push/hls/hds/mss/dash/record/process status
at this point the server crashes and is not able to recover (keeps on looping with errors) until a forced restart.
What’s the cause?
do we have any way to avoid this in a safe way?
thanks