We have different cameras that all record 24/7. After 10 days, some of them use ~50GB and others 500GB.
We cannot touch FPS/Resolution, but we can play with CBR/VBR and max bitrate and zipstream, etc.
But it’s very hard to know for sure that the new settings will yield a smaller storage.
When looking at a stream in the management client, there is a number of KB displayed (see the “53KB” at the bottom of https://imgur.com/a/u2tCCGe), which corresponds to “data rate of the camera’s live stream”, so by tweaking we can lower that number and get a rough idea about our improvements. But sometimes that does not work at all and even tho the number is lower what is stored gets larger.
So, here are my questions:
How to get the *recorded" bandwidth that is being used by the recorder? ideally something like “camera X currently store images at 15KB/s”.
If there is no support in the API, what’s the best way to achieve that? Monitor the MediaDatabase .blk files and see how much they take after X minutes?
The current bitrate for all the streams being pulled for a camera can be retrieved using the GetVideoDeviceStatistics() method on the RecorderStatusService2 client. When you pass the method your current token, and a list of camera ID’s, it will respond with a VideoDeviceStatistics array which includes the current bits/second and information about whether the stream is the recorded or default live stream.
The new `Get-VmsCameraReport` function in MilestonePSTools provides you with the current FPS, bitrate, and resolution relatively quickly, especially if you specify a single Recording Server to get results for. It makes use of the `Get-RecorderStatusService2` cmdlet to get access to that GetVideoDeviceStatistics() method above.
There’s also a Windows performance counter called “Bytes/sec” under the “VideoOS Recording Server Drivers” category in the Windows Performance Monitor MMC.