Blue Iris UI3

Yes. If you are logged in as a Blue Iris administrator, then UI3 will have an option at the bottom of its settings panel for you to download a ui3-local-overrides.js script containing all of your current settings (including the camera group you loaded last). If you place that file in the C:\Program Files\Blue Iris 5\www\ui3 directory, then everything in that file will become the new default settings for everyone that connects to your UI3. This Help page talks about it in a bit more depth.
I'm bookmarking this!! ^^^^^ :cool:
 
Hey all,

So now that I've managed to achieve ~4% CPU usage for BI when the console is minimized, running 7x 4MP cams, I'm trying to see what I can do to optimize UI3.

At the moment, it turns out that UI3 easily adds ~15% to the server's CPU usage. Since I have a dedicated wall-mounted tablet that is showing the index view of all cams 24/7, I want to reduce the CPU load from the average of ~25% that it's sitting at currently.

Here's what I've done so far:

  • Adjusted the FPS for 'All cameras' under 'Webcasting' settings found in the BI console to 15 FPS, and checked 'Fast scaling to save CPU'.
  • Unticked 'Require/decode all video frames (streaming or timeline)
  • Enabled Intel QSV acceleration in the Encoder Options under general Web Server encoder configuration.
  • Enabled 'Direct to wire where possible', even though this only really helps when viewing a single camera (if I understand correctly).

Is there anything else I should be looking at? Maybe some settings within the UI3 interface itself?
 
Hi @Corvus85.

You could lower the resolution of the stream going to UI3. There are a lot of ways to do that:

1) In BI's group layout editor
2) In UI3's Group Settings panel (right click the group video to get this option)
3) Or just choose a lower-resolution streaming profile in UI3.

You could reduce the frame rate sent to UI3 even further.

And you could choose a faster H.264 encoder profile. Ultrafast is the fastest but lowest quality. Superfast is a good middleground. Veryfast is highest quality but the slowest, and can add some delay.

Unticked 'Require/decode all video frames (streaming or timeline)

This only has an effect if you use "limit decoding" on the server, but then it is quite a good effect for CPU savings.

Enabled Intel QSV acceleration in the Encoder Options under general Web Server encoder configuration.

I have never seen any evidence this actually does anything. Nvidia acceleration supposedly works, though I've never had the opportunity to try it on a card that supports hardware video encoding.

Enabled 'Direct to wire where possible', even though this only really helps when viewing a single camera (if I understand correctly).

Correct, this can only affect single camera LIVE streams where the camera is encoding H.264 (not jpeg or anything else).
 
You could lower the resolution of the stream going to UI3. There are a lot of ways to do that:

So I'm confused. Isn't the point of 'direct to wire' that the original resolution of the camera stream is sent to UI3, unchanged?
How can it still be direct to wire if for example I can choose 480p when viewing a solo 4K camera? Doesn't that imply that some re-encoding is happening?
 
So I'm confused. Isn't the point of 'direct to wire' that the original resolution of the camera stream is sent to UI3, unchanged?
How can it still be direct to wire if for example I can choose 480p when viewing a solo 4K camera? Doesn't that imply that some re-encoding is happening?

Yes, that is the point. Each video stream will either be direct to wire, or it will be a re-encoded stream. It can't be both at the same time.

If you choose 480p but you have Direct-to-wire enabled, then you'll get a direct-to-wire stream when that is available (single camera live view encoded with H.264), otherwise you will get a 480p stream.
 
  • Like
Reactions: looney2ns
If you choose 480p but you have Direct-to-wire enabled, then you'll get a direct-to-wire stream when that is available (single camera live view encoded with H.264), otherwise you will get a 480p stream.

But that still doesn't make any sense. I've got direct to wire enabled, but when I select a 480p stream in UI3 while looking at the group view, it remains in 480p even when I select a single camera live view. I can tell because the quality is substantially reduced.

How can this be direct to wire? And if it isn't, how can I ensure that it is direct to wire?
 
If you enabled that for the "Streaming 0" profile then it should work. Do note that if your cameras are sending H.265 then it won't work for them.
 
If you enabled that for the "Streaming 0" profile then it should work. Do note that if your cameras are sending H.265 then it won't work for them.

Ok so that brings me back to my question - how can it be 'direct to wire', if I can change the quality when viewing a solo camera?
Isn't the whole point of direct to wire to send the camera stream unaltered to UI3?
Obviously if the quality is able to be changed, the stream is being altered, and is therefore, not 'direct to wire'.
How is this then 'direct to wire'?
 
Ok so that brings me back to my question - how can it be 'direct to wire', if I can change the quality when viewing a solo camera?

If you can change the quality, then it isn't direct-to-wire. You're clearly missing one of the requirements. I didn't mention before, the camera needs to have "direct-to-disc" recording enabled too.

Isn't the whole point of direct to wire to send the camera stream unaltered to UI3?

Yes.

Obviously if the quality is able to be changed, the stream is being altered, and is therefore, not 'direct to wire'.
How is this then 'direct to wire'?

If you can change the quality, then it isn't direct-to-wire.
 
If you can change the quality, then it isn't direct-to-wire. You're clearly missing one of the requirements. I didn't mention before, the camera needs to have "direct-to-disc" recording enabled too.

I've satisfied all requirements, and yet changing the quality still affects the quality of the single cam. Is it possible maybe that we're both not understanding fully how 'direct to wire' works? Does it behave differently on your system? Does changing the stream quality not change the quality of the single cam view for you?
 
Does changing the stream quality not change the quality of the single cam view for you?
Correct. When direct-to-wire is working, the other encoding parameters from the streaming quality have no effect.
 
Why would the stream from a cam be lagging by several full minutes at times?

Normally good but now and then one of my 4K cams will get behind by a lot. Like 2 or 3 full minutes (as shown by the cam's time overlay). It's fine viewing in BI via RDC and through the cam's interface. Only see the delay in UI3 and when viewing through the app.. Thinking back now while writing this I believe that I've seen the same from my Color4K-X a few times too. Those are my only 4K cams and the only ones where I've ever noticed the same. Other cams are OK when this happens so not an overall slowdown. Substream from the cam is OK too. Only the main stream is delayed.
 
Last edited:
  • Like
Reactions: Flintstone61
Why would the stream from a cam be lagging by several full minutes at times?

Normally good but now and then one of my 4K cams will get behind by a lot. Like 2 or 3 full minutes (as shown by the cam's time overlay). It's fine viewing in BI via RDC and through the cam's interface. Only see the delay in UI3 and when viewing through the app.. Thinking back now while writing this I believe that I've seen the same from my Color4K-X a few times too. Those my only 4K cams and the only ones where I've ever noticed the same. Other cams are OK when this happens so not an overall slowdown. Substream from the cam is OK too. Only the main stream is delayed.

No idea. When you view in BI, if you maximize the camera, is it delayed then?

When you click the camera in UI3's group view, is it delayed as soon as the main stream video appears, or does it take time to become delayed?

Did you configure the main and sub streams to have the same frame rate and iframe interval as recommended in the sub stream guide?
 
  • Like
Reactions: Flintstone61
No, it's fine viewing single-cam in BI (and in the cam's interface). Also OK when viewing the substream in multi-view in BI and UI3. If I click on the cam to maximize it in UI3, that's when I see the delay. I'd have to double check it again when it's happening to be sure but I believe that it does it from the start not after some period of time. I know for sure that once it gets behind, it stays behind if I click back and forth between single- and multi-cam view and/or if I do a browser refresh. Tried that thinking that maybe I could refresh the stream that way but doesn't work. Yes, all cams have matching frame rates and I frame intervals, either 15 or 20 for both depending on cam. The two 4K Dahua cams where I see this are set CBR, frame rate 20, bit rate 10240, interval 20 for main, 704x480, CBR, bit rate 1024, 20/20 frame rate/iFrame for substream.

Eventually it will "jump time" and catch up and is fine again. Haven't really tracked how long/when/how that happens. Just magically working again later when I look. I say "jump time" because I'm pretty sure that I've seen it catch up immediately when I check it within whatever period of time delayed vs a more gradual catch up over time.
 
Last edited:
No, it's fine viewing single-cam in BI (and in the cam's interface). Also OK when viewing the substream in multi-view in BI and UI3. If I click on the cam to maximize it in UI3, that's when I see the delay. I'd have to double check it again when it's happening to be sure but I believe that it does it from the start not after some period of time. I know for sure that once it gets behind, it stays behind if I click back and forth between single- and multi-cam view and/or if I do a browser refresh. Tried that thinking that maybe I could refresh the stream that way but doesn't work. Yes, all cams have matching frame rates and I frame intervals, either 15 or 20 for both depending on cam. The two 4K Dahua cams where I see this are set CBR, frame rate 20, bit rate 10240, interval 20 for main, 704x480, CBR, bit rate 1024, 20/20 frame rate/iFrame for substream.

Eventually it will "jump time" and catch up and is fine again. Haven't really tracked how long/when/how that happens. Just magically working again later when I look. I say "jump time" because I'm pretty sure that I've seen it catch up immediately when I check it within whatever period of time delayed vs a more gradual catch up over time.

That sounds pretty strange. I can't even guess what is causing the behavior you describe. It sounds like it couldn't be UI3's fault, because it happens at the start of a stream (quote: it stays behind if I click back and forth between single- and multi-cam view and/or if I do a browser refresh). But this ( it's fine viewing single-cam in BI) tells me that Blue Iris isn't receiving the video late or anything like that, and I have never seen it be out of sync between the local console and the web server like that.

Could be a new bug I suppose. Do you know what version of BI you were running when it started and about how long ago it was?
 
Currently running 5.5.9.3. Don't recall when I first noticed. I think I did see it in whatever version I was running just prior to this one but wouldn't swear to it. I usually lag my updates a bit too.

Yeah, I see this on multiple machines if I open UI3 on them at the time and I know that I've seen in the app too so must be something related to the streaming out from BI to the devices. And as I said, other cams aren't affected so seems related to that specific stream not BI overall. CPU typically is a little higher with RDC and the console open and bringing up the mainstream and having UI3 open when messing with it but it's maybe hitting 40%-50%-ish and not pegging out or anything like that.

I'll try to screen capture next time it happens. I can show it displaying the substream 'real-time' in the multi-cam view with the current time. Click and it will show the main stream with whatever was happening several minutes ago and that earlier time displayed.
 
Last edited:
  • Like
Reactions: bp2008
Correct. When direct-to-wire is working, the other encoding parameters from the streaming quality have no effect.

I don't think you understand what I'm saying.
The encoding parameters DO have an effect. When I change them in the UI3 UI, the quality is affected when I view a single cam.
Are you saying that this shouldn't happen?
If so, why is it happening?
 
I don't think you understand what I'm saying.
The encoding parameters DO have an effect. When I change them in the UI3 UI, the quality is affected when I view a single cam.
Are you saying that this shouldn't happen?
If so, why is it happening?

@Corvus85 Just in case you did not know, @bp2008 created UI3 so he should know what he is talking about. It's his code.
 
  • Like
Reactions: sebastiantombs