1920x1080 video stuttery in xProtectGo 2014 with Hikvision cameras

Hi!

I have a couple of Milestone xProtect Go 2014 systems setup with Hikvision (DS-2DC2032-I) and Axis cameras.

If I set the main stream of the cameras to 1080p both the live and playback feeds within Smart Client 2014 v 9.0.764.2 show stuttery video. If a person walks past a camera they appear to pause for 100ms or so every other second.

Setting the cameras to 720p and this stutter disappears in live and playback feeds within Smart Client 2014.

If I use the very same PC that I run the Smart client on to view the 1080p camera feed within the cameras own web pages there is no stutter.

Network A

xProtectGo 2014 server is running on a dedicated Win2008 R2 VM with USB passthrough storage for recordings. There are six cameras in total, 3x DS-2CD2032-Is and 3x Axis cameras. Server shows network 21Mbit/s, 2MB/s disk I/O and 10% CPU. Cameras are either running software 5.3.0 or 5.2.0

I can set the cameras to record 1080p directly (using the Storage option within the camera firmware) to separate partitions shared as SMB on the USB passthrough storage. The 1080p recordings show no stutter.

Network B

xProtectGo 2014 server is running on a Windows 8.1 Pro dedicated Core i3 desktop with SSD system drive and 2Tb SATA III dedicated storage for recordings. There are five cameras in total, 5x DS-2CD2032-Is running. Server shows network 21Mbit/s, 2MB/s disk I/O and 40% CPU. All cameras are running software 5.1.2

I can set the cameras to record 1080p directly (using the Storage option within the camera firmware) to storage running on a Dlink NAS box. The 1080p recordings show no stutter.

This sounds like a bottleneck somewhere between the camera and Recorder. But it could also be a camera limitation.

Best starting point for debugging would be the Recording Server logs (latest log entries available from the Recording Server Tray icon → Show status messages)

Another vital Tool is the Windows Task Manager (Process view) for checking if any process is overspending CPU/RAM/Network or Disk resources.

Also, (in Camera Settings) make sure you’re using H.264 and the lowest possible quality level, and no more than 15 FPS. Some Hikvisions default to 100% quality level, which can easily overload the ImageServer service, and possibly even the device itself. Recommendation stands at 50-60% using H.264.

Thanks for the reply Michael,

RE: This sounds like a bottleneck somewhere between the camera and Recorder.

I am confident there are no bottlenecks between the camera and recorder. I have used Win2012 and Win8 Resource Monitor to collect and analyse metrics. There is also PRTG Network monitor continually collecting metrics on the core network and servers. NOTE: The two sample networks quoted below are on different LANs on separate sites.

RE: But it could also be a camera limitation.

What sort of limitation could this be? I can get the cameras to record stutter free 1080p directly to the very same storage that Milestone is using, with or without Milestone recording at that time.

RE: Best starting point for debugging would be the Recording Server logs (latest log entries available from the Recording Server Tray icon → Show status messages)

There is nothing recorded in Milestone log to suggest there are any issues.

RE: Another vital Tool is the Windows Task Manager (Process view) for checking if any process is overspending CPU/RAM/Network or Disk resources.

I have used Resource Monitor extensively, along with PRTG to gather and analyse metrics. By design the network, server and workstation are over specified. There is no data to indicate network or servers resources are being exhausted.

RE: Also, (in Camera Settings) make sure you’re using H.264 and the lowest possible quality level, and no more than 15 FPS. Some Hikvisions default to 100% quality level, which can easily overload the ImageServer service, and possibly even the device itself. Recommendation stands at 50-60% using H.264.

I have tried all combinations of camera settings for 1080p. The current settings (configured using the cameras web pages) are 1920x1080p, VBR, Medium quality, 15fps, Max bitrate 4096Kbps, H.264.

If I view the live or recorded stream within the cameras web pages at the very same time I view the stream in Milestone there is a noticeable difference i.e. Milestone shows some stutter.

If I close down the cameras web pages and just view by Milestone the very same stutter is there.

I only see stutter with the live and playback streams using the cameras built in live view capability when I set Max bitrate to 12288Kbps.

Even with the camera set to 1920x1080p, VBR, Highest quality, 25fps, Max bitrate 8192Kbps, H.264 there is no stutter viewing through the cameras web pages.

NOTE: All testing is done with wired Gb connectivity – all devices patch into a single switch.

Using 8 or 12 Mbps stream data fro each camera can cause overload issues for the Smart Client. And combining multiple cameras in a single View with these stream properties definitely will.

Remember this is basically software decoding with very little hardware acceration. Please try these also:

  • For the Camera settings, use: 1080p, VBR, profile based on speed vs. quality, 15fps, max bitrate 2 Mbps, H.264 encoding.
  • In the Smart Client Settings → Options → Advanced → Max. decoding threads → experiment with 2, 4, and “normal”.
  • In the Smart Client, in Setup Mode, for each Camera View → Properties → Video buffering → Try the different buffer sizes starting from “small” in stead of default

Thanks for the reply Michael

RE: Using 8 or 12 Mbps stream data fro each camera can cause overload issues for the Smart Client. And combining multiple cameras in a single View with these stream properties definitely will.

Understood: the standard settings I have been using (configured using the cameras web pages) are 1920x1080p, VBR, Medium quality, 15fps, Max bitrate 4096Kbps, H.264.

To test the camera capabilities (not Milestone) I set 1920x1080p, VBR, Highest quality, 25fps, Max bitrate 8192Kbps, H.264. There is no stutter viewing through the cameras web pages.

RE: For the Camera settings, use: 1080p, VBR, profile based on speed vs. quality, 15fps, max bitrate 2 Mbps, H.264 encoding.

This is the same as my standard settings except for max bitrate of 2048Kbps. This does not stop the stuttering present in the Smart Client.

RE: In the Smart Client Settings → Options → Advanced → Max. decoding threads → experiment with 2, 4, and “normal”.

I cannot detect any difference when adjusting these settings.

RE: In the Smart Client, in Setup Mode, for each Camera View → Properties → Video buffering → Try the different buffer sizes starting from “small” in stead of default

I cannot see this setting.

I have a camera view set for each camera – so 99% of the time I use the Smart Client to view a single camera at any one time.

I can see in Resource Monitor that Client.exe uses 20% of the CPU when viewing a single camera and there is noticeable stutter during live view and playback.

If I switch to a view with all cameras then I see the CPU usages increases to 60-70%.

At no point in time are the physical resources of the Smart client hardware exhausted.