Optimizing Blue Iris's CPU Usage

Jun 1, 2018
Optimizing Blue Iris's CPU Usage
  • Introduction

    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.

    Essential Optimizations

    These optimizations are recommended for all Blue Iris systems, because their benefit is very significant.

    Direct-to-disc recording

    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...".

    Record-Video-file-format.png

    Choose the Direct-to-disc option.

    Direct-to-disk.png

    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 acceleration

    If your CPU supports Intel® Quick Sync Video, then you can use hardware acceleration in Blue Iris to reduce CPU usage with any camera streaming H.264.

    This is controlled by a single setting. Open Blue Iris Options, then on the Cameras tab, find Intel HD hardware acceleration. Choose the option "Yes (H.264)". 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.

    HWVA.png

    You may also enable and disable hardware decoding for individual cameras on the Video tab of Camera Properties.

    Note that H.265 acceleration is not available in Blue Iris at this time. The previously-implemented support for it has never worked.

    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 0 - Video Decode".

    Note: On Windows 7, hardware acceleration does not work if you run Blue Iris in service mode.

    Camera frame rates - 15 FPS

    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.

    Other Optimizations

    In case you need to reduce Blue Iris's CPU usage further, there are some other things you can do.

    Run as a service

    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.

    service.png

    * NOTE: Hardware acceleration does not work on Windows 7 when running Blue Iris as a service.

    Live preview frame rate

    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.

    Live preview FPS.png

    Video scaling

    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.

    scaling.png

    Text and Graphic Overlays

    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.

    text-overlay.png

    Encoder preset

    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.

    h264encoder.png

    Limit decoding unless required

    upload_2017-10-23_11-53-55.png

    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:
    There is one notable inaccuracy in that statement. It claims there is typically one keyframe per second, but this is false. Most cameras by default only produce one keyframe every 2-4 seconds. It is advisable to adjust your camera's i-frame interval to be equal to the frame rate if you are going to use Limit decoding unless required along with Blue Iris's motion detection.

    * 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:

    GroupSettingsPanel-2018-05-31.png
  • Loading...
  • Loading...
  • Loading...