We try to tell people substreams are a must, and people resist it LOL...A member here with 50 cameras on a 4th generation was pegged at 100% CPU and we got him to reluctantly agree to try the substreams and his usage dropped to 30%.
And no it isn't a bug in
Blue Iris and your statement of "
In fact the massive CPU reduction kind of proves my point." and "
When making a system that constantly records there should be virtually no CPU usage" shows that you still do not understand how BI (or Zoneminder or any other VMS platform) uses the main and substream or how the program even works.
You seem to think that we can just throw unlimited cameras at a VMS and the CPU shouldn't be used in the process if you are not doing any analysis and just recording to HDD and that just isn't how computers and programs work. Heck downloading a movie will use the CPU and that isn't going through any program but a web browser, but in your analogy that shouldn't be the case and I should be able to download 100 movies at the same time with zero CPU usage... Heck just copying files from one folder to another uses CPU. Just moving the mouse around and not opening any programs uses CPU. Every action in a computer uses CPU to varying degrees.
Even using direct-to-disc, Blue Iris is still taking that video and processing it into proprietary BVR format. Any VMS system needs to process the video data into a format that the program can read and do something with.
Just like your car idling in park is still using gas even if you are not going anywhere, the computer needs to use CPU to handle all the data being thrown into the VMS. An NVR is basically a watered down CPU and it is being taxed as well with just video coming in.
I asked you to provide a screenshot of your BI Camera status page which you didn't do, but what drives up the CPU is the MP/s value down at the bottom. The higher that number, the harder the CPU has to work. And this number is independent of any video analysis. A computer and program cannot just accept unlimited video data without using the CPU. And the CPU goes up in usage with analysis. Your number without substreams was probably 8-10 times what it is now. All this data cannot just come into a VMS software with no load on a CPU.
Turn off the substreams and see what your MP/s value is and then turn them back on see that reduction in number - that is how CPU % is saved and the number is probably a factor of 10 difference.
In particular, substreams greatly reduce the number of MP/s your system needs to process. For example two "D1" resolution sub streams at 15 FPS each would be only around 10 MP/s (versus 249 MP/s for 4K main streams!).
My system was at 2,000MP/s before the substreams was introduced. It is now under 200MP/s. And that is how the CPU % savings is achieved. You are actually changing the MP/s that the program is dealing with.
You can accomplish the same thing by downrezing the mainstream to ridiculous low resolution and bitrates, but why would we want to do that.
When you configure a camera in Blue Iris to use a sub stream, Blue Iris pulls the video from both the "main" and "sub" streams. Each stream is used for different purposes and have different impacts to CPU usage.
The main stream is used for:
- direct-to-disc recording
- single-camera live viewing and recording playback
- audio
The sub stream is used for everything else:
- multiple-camera live viewing and multiple-camera playback
- motion detection
- alert snapshots
- etc.