I need to integrate Live Feed and Playback into a SCADA System.
Since the Component Integration fails to load in the scada application because of it’s dependencies, i decided to use the protocol integration instead.
First connecting to the video server takes up to 40 seconds. The connect method just runs into timeout after timeout until it finally works.
Also the video server just doesn’t keep up with delivering images. I’ve disabled transcoding. I’m buffering 250 images(which takes over 20 seconds to retrieve from the server). And after about 18 seconds of video i run out of images and need to wait for 10s to refill my buffer.
The video server constantly runs at 36% cpu load and never goes over 50%. 20% memory consumption. Since the server currently doesn’t record anything, the harddisk load is next to nothing. Both machines are connected via 1GBit Ethernet and the network load never excceeds 10%. Running the application locally on the video server makes no difference.
I’ve tried using multipartdata, but the videoserver refuses that.
I’ve tried sending multiple “next” requests(1, 3, 5 10, 25, 250) in a row, which helped a little, but not nearly enough. I’ve increased the socket receive buffer to 16Mb, but it never fills over 1Mb, because the receive thread just waits for data to arrive and consumes it fast enough.
The receive thread sometimes just waits on the socket for data to arrive for several seconds.
I have no idea what else to try.
regards Martin
Have you used the TCPVideoViewer as starting point for your integration? Do you see the same behavior using the sample unmodified?
Please clarify which protocols, perhaps even which requests, you do (if different from the sample).
How does the system work in general; is Smart Client login fast as you would expect?
Which versions? MIP SDK version? XProtect version?
We’re a solution partner and develop a protocol integration and just had something very like this at a customer site (using Corprate 2016).
What it came down to was the names of the camera servers (which we get from systeminfo.xml) resolved to two IP addresses, corresponding to the two NICs. Only one of these addresses actually worked (one was a normal address and this one worked, the other a 169.254 link local address and this did not work). I guess that ImageServer only listens on the normal address (perhaps it attaches itself to the first NIC?). So when we were unlucky (50% of the time) we got no connection and eventually a time-out and had another go.
The ambiguity in resolving the names arose as there was not a DNS server (with an unambiguous resolution) and instead Windows was resolving the name and helpfully noticed the second address (the camera server sent something called an LLMNR query response, one for each of the two addresses, to advertise their existence).
We’re currently unsure why the network was set up in this way but it may relate to load balancing. Is there some way to get the ImageServer to listen on both NICs? (or should it ordinarily do so?)
Henry Detmold, CTO of Snap Network Surveillance