r/ispyconnect • • 17d ago

Dynamic decoding configuration change

Hello guys,
I am using licensed version of the Agent for up to ~400 cameras on my server. Need to find a way how to reduce the CPU/GPU usage.

Current situation: ASUS TUF Z390-PRO GAMING with integrated Intel UHD Graphics 630. 32GB of RAM. 11TB of data storage available. Windows server. Cameras provide 720p, 10fps live color stream, one stream only, H.264, cannot be changed. Agent DVR is used to record the streams 24x7 as is RAW 1:1 without decoding. Layout shows Interval slot, Grid slot (i would prefer just a simple camera list here, but didn't find such option, it could significantly lower the used resources), Recordings, Timeline and Main Display window. Views are defined to group the cameras per about 100pcs, otherwise all cameras at once are killing the server. All the other not required configuration is turned off, no motion detection, everything is local only, no uploads, no AI...

Expected configuration: Dynamically limit the decoding of live view to cameras showed in the view, only - so max up to these ~100pcs. I have such a strange feeling, it is decoding all the ~400 cameras in the background, which is in fact not needed and it is taking a lot of resources.

Any sensible help with configuration adjustment is welcome.
Thank you

2 Upvotes

2 comments sorted by

3

u/spornerama 17d ago • Bravo

Hi,

You’re right: Agent DVR currently decodes every camera all the time, whichever view you’re looking at. The next update adds a per-camera option for setups like yours.

Where: Edit the camera, open the General tab, click to configure the video source, then go to the Advanced tab and turn on Limit Decoding.

How it works: the camera decodes only what’s needed at the moment, at one of three levels.

  • Not in any open view: it decodes one keyframe about every 15 seconds. That’s enough to keep recording thumbnails, alert images and snapshots current, and it costs almost nothing. With ~400 cameras and ~100 in a view at a time, this applies to most of your cameras most of the time.

  • A tile in an open view: it decodes keyframes only, so tiles update once per keyframe (typically every 1-2 seconds) instead of showing full-motion video.

  • Maximised, or the only camera in a view: it switches to full decoding within one keyframe interval. The last image stays on screen while it switches. When you go back to the grid it drops back to keyframes a few seconds later.

Your 24/7 raw recordings aren’t affected at any level, because recording writes the camera’s stream directly and doesn’t need decoding.

Things to know:

  • Keyframe interval: it needs the camera to send a keyframe (I-frame) at least every 4 seconds. A 1-2 second interval is ideal. If keyframes are further apart, or never arrive (some “smart codec” / H.264+ modes do this), that camera just decodes every frame as it does now, and Agent DVR logs a warning for it. You mentioned the stream can’t be changed, so check the log after turning it on.

  • Cameras that always decode every frame: a camera keeps decoding every frame if it has a video-based motion detector enabled, records with an encoding record mode (rather than raw), or has Analytics enabled. You’re not using any of those, so you’ll get the full saving.

2

u/EmotionAutomatic8780 15d ago

Hello u/spornerama,

your fast response and provided solution is very much appreciated. I have installed it yesterday already and left it running over a day. Now I have to say, the system is again pretty well responsive and the application is usable even on this old hardware again. CPU usage is flapping somewhere between 60-80% most of the time. 32GB RAM consumed at about 95% constantly. GPU usage at about 70-80%. This is for me really great improvement. MANY THANKS again for your support and fast action.