Optimizing Blue Iris's CPU Usage
Blue Iris uses a lot of CPU time. In most Blue Iris installations, your CPU is the limiting factor which determines how many cameras you can have. As such, it is extremely important to optimize several settings to ensure you can get the most out of your system, while consuming the least amount of electricity.
These optimizations are recommended for all Blue Iris systems, because their benefit is very significant.
The Direct-to-disc feature allows Blue Iris to record video directly to the hard drive without re-encoding it. Re-encoding video is extremely CPU-intensive, and should be avoided at all costs. Direct-to-disc recording is perhaps the most important optimization you can make.
This setting is configured individually for each camera in Blue Iris.
Right click a camera and choose "Camera properties...". On the Record tab, click "Video file format and compression...".
Choose the Direct-to-disc option.
When you use Direct-to-disc, it is strongly-recommended to also have the camera embed its own timestamp into the video stream (otherwise the timestamp will not appear in a recording until you export it).
* Note: Direct-to-disc does not work with the Blue Iris Demo. A paid license is required.
Hardware accelerated decoding(top)
If your CPU supports Intel® Quick Sync Video, then you can use hardware acceleration in Blue Iris to reduce CPU and energy usage significantly with any camera streaming H.264. Open Blue Iris Options, then on the Cameras tab, find Hardware accelerated decode (restart). Use the "Intel®" option for best results. The "Intel®+VideoPostProc" option usually performs worse and can cause video delay if overused, but may be viable on smaller systems. Restart Blue Iris for this change to take effect. If you are running Blue Iris as a service, you will need to restart the service, or just restart the entire computer.
You may also override the global hardware decoding option for individual cameras on the Video tab of Camera Properties. A full app restart is not required when you change individual cameras.
Note: On Windows 10 Version 1709+, you can easily verify that hardware acceleration is working. Just look in Task Manager on the Processes tab, and you should see a GPU column with a non-zero % load, and the GPU Engine column should read "GPU X - Video Decode". In Windows 10 Version 1803+, the Performance tab also provides graphs.
Note: On Windows 7, hardware acceleration does not work if you run Blue Iris in service mode.
Notes about Intel®(top)Intel hardware acceleration provides substantial savings in both CPU time and power consumption, and is highly recommended if Quick Sync Video is supported by your hardware.
Intel acceleration most likely will not work with cameras streaming H.265, so don't be surprised if you try it and it only works with H.264.
Notes about Nvidia® CUDA®(top)Supported in Blue Iris 4.7.8+ (August 28, 2018)
Nvidia® CUDA® hardware acceleration reduces CPU usage similar to Intel® Quick Sync Video, and is available if you have an Nvidia GPU capable of NVDEC (see Video Encode and Decode GPU Support Matrix). Newer and faster GPUs can handle more video than older or slower GPUs.
WARNING: Nvidia hardware acceleration is actually very inefficient, resulting in much higher power consumption (increases long-term cost and heat output) and higher memory usage. Considering the relatively high purchase price and ongoing expense of using Nvidia hardware, it is a poor choice for most Blue Iris systems.
Camera frame rates - 15 FPS(top)
Most cameras have a default frame rate around 25 or 30 FPS. In most situations, this is a lot more than you need. Each frame requires CPU time to process, so the lower the frame rates, the better.
This setting is configured individually for each camera in the camera's web interface. It is recommended to use frame rates of 15 FPS or lower, as beyond about 15 FPS there is little meaningful improvement in video smoothness compared to the additional processing costs.
Also set Blue Iris's "Max. rate" option in camera properties on the Video tab to your camera's actual streaming frame rate, or just barely above. This max rate setting is supposed to auto-adjust itself upward as necessary, but higher values of this setting directly impact your server's memory usage in a huge way, so don't let it be much higher than the camera's true frame rate.
In case you need to reduce Blue Iris's CPU usage further, there are some other things you can do.
Run as a service(top)
When Blue Iris is configured to run as a Windows service, Blue Iris will start automatically with the PC, remain running when the graphical user interface (GUI) is closed, and automatically recover from most crashes. While the GUI is closed, CPU usage is reduced.
* NOTE: Hardware acceleration does not work on Windows 7 when running Blue Iris as a service.
Live preview frame rate(top)
Blue Iris can take quite a lot of CPU time to draw live video to the screen through the local GUI, particularly if you have a high resolution monitor. There is an option to limit this frame rate, and therefore reduce CPU usage while the GUI is open. Open Blue Iris Options, then on the Cameras tab, enable the "Limit live preview rate" setting and assign a fairly low number for the rate limit. This does not affect recordings, so consider even setting the limit to 1 FPS.
Blue Iris has 3 video scaling modes: "Fast", "Bilinear", and "Bicubic". "Fast" uses the least amount of CPU, and is strongly recommended unless you cannot tolerate the jagged artifacts it creates in live streams in the Blue Iris local console. This setting becomes especially important if you have a large system, where the CPU usage difference can be dramatic.
This option is found in Blue Iris Options on the Other tab.
Text and Graphic Overlays(top)
By default, Blue Iris overlays a timestamp on each camera. Assuming you have the camera embedding its own timestamp, you can save a small amount of CPU time by disabling Blue Iris's timestamp. This option is on the Video tab of camera properties.
When CPU usage is elevated due to a lot of remote viewing using H.264 video, it can help to change the encoder preset.
Go to Blue Iris Options, Web server tab, and in the Advanced section you can Configure the encoder profiles which are used for H.264 encoding. The 3 preset choices exposed by Blue Iris, from fastest to slowest, are "ultrafast", "superfast", and "veryfast". "ultrafast" uses the least amount of CPU but produces the lowest video quality. "veryfast" uses the most CPU but produces the best video quality.
Limit decoding unless required(top)
This is a complex feature with many effects, and is not recommended for everyone. Be aware of the side-effects and limitations!
From the Blue Iris help file:
* Note: i-frame is another word for keyframe. GOP ("group of pictures") is also synonymous with "i-frame interval".
Many users turn this feature on for all their cameras without understanding it, but love the drastic CPU usage savings it provides. Later, they discover that their server's CPU usage hits 100% when they connect to Blue Iris through the web interface or a client app. This happens because remote camera viewing temporarily disables the "limit decoding" feature, and viewing the "All cameras" group disables it for all cameras at the same time! You can prevent this on a per-group basis by unchecking the box "Require/decode all camera frames when streaming" in Blue Iris's group settings panel: